代码优先:Sequence包含多个匹配元素 - 具有多个引用的多个类

时间:2016-06-24 21:59:39

标签: c# sql-server database entity-framework code-first

尝试运行“Add-Migration”命令时,我收到“Sequence包含多个匹配元素”错误消息。我相信这个问题源于我有多个类,这些类有多个对共享类的引用。

class User {
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid UserId {get; set;}
    public string Name {get; set;}
// other stuff removed for display purposes
    [InverseProperty("CreateUser")]
    public virtual ICollection<Foo> FooCreateUser { get; set; }
    [InverseProperty("ModifyUser")]
    public virtual ICollection<Foo> FooModifyUser { get; set; }

    [InverseProperty("CreateUser")]
    public virtual ICollection<Bar> BarCreateUser { get; set; }
    [InverseProperty("ModifyUser")]
    public virtual ICollection<Bar> BarModifyUser { get; set; }
}

class Foo {
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid FooId {get; set;}

    [InverseProperty("FooCreateUser")]
    public User CreateUser {get; set;}

    [InverseProperty("FooModifyUser")]
    public User ModifyUser {get; set;}
}

class Bar {
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid BarId {get; set;}

    [InverseProperty("BarCreateUser")]
    public User CreateUser {get; set;}

    [InverseProperty("BarModifyUser")]
    public User ModifyUser {get; set;}
}

上述代码有什么问题?

我是否必须将[Bar]和[Foo]数据库表中的字段名称更改为唯一?
即将[Foo] [CreateUser]更改为[Foo] [Foo_CreateUser]?

我需要在多个数据库表上有一个“CreateUser”和“ModifyUser”字段,从数据库设计角度来看,没有任何意义可以使所有这些字段都具有唯一名称。

我如何告诉CodeFirst这样做?

0 个答案:

没有答案