【发布时间】:2014-06-19 13:18:52
【问题描述】:
我在实体框架中尝试使用复合键时遇到了这个问题
附加信息:属性表达式 't => new f__AnonymousType0 无效。表达式应该代表一个 属性:C#:'t => t.MyProperty' VB.Net:'Function(t) t.MyProperty'。 指定多个属性时使用匿名类型:C#: 't => 新 { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New With { t.MyProperty1, t.MyProperty2 }'。
代码是
// Primary Key
this.HasKey(t => new { t.ID, t.ID2, t.Version.Major, t.Version.Minor, t.Version.Revision, t.Version.Build });
型号
public int ID { get; set; }
public short ID2 { get; set; }
private VersionType m_Version;
public VersionType Version
{
get
{
return m_Version;
}
set
{
SetProperty(ref m_Version, value, () => this.Version);
}
}
modelBuilder.ComplexType<VersionType>()
我相信它与在属性(主要等)之前声明版本类有关。
如果是这样,我能解决这个问题吗?
干杯
【问题讨论】:
-
能否为您的模型添加代码?
-
从SQL关系和表的角度思考,当一些数据在另一个表中时,如何设置一个键在一个表上? IE。版本。*。 Version 是
t的 Navigation 属性,因此 SQL 无法在其上创建键约束。 -
@Tacoman667 我以为它是复杂类型的一部分,但我们只能猜测,除非他发布代码
-
我相信这是对的,就像我的假设一样,我发布了模型
-
msdn.microsoft.com/en-us/data/jj680147#What 复杂类型非常严格......
标签: c# entity-framework