【问题标题】:Entity Framework composite key issue实体框架复合键问题
【发布时间】: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


【解决方案1】:

我认为这可能会对您之前的 SO 问题有所帮助。 https://stackoverflow.com/a/5683788/78551 看看他们如何定义模型和流畅的 api 配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多