实体框架使用外键作为一对多的主键

时间:2016-07-05 16:19:53

标签: asp.net-mvc entity-framework

我首先使用Entity Framework代码来设计数据库。

我有2个与一对多关系的模型。一个“Foo”可以有如下许多“FooData” -

keyWindow

当我尝试在MVC中为“Foo”添加控制器时,使用“Foo”作为脚手架模型,它给了我这个错误 - “Multiplicity在Role中无效。因为Dependent Role指的是关键属性,依赖角色的多重性的上限必须是1“。

我会在这里感谢一些帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

由于你如何定义,因此两者都使用相同的密钥,因此它是一对一的关系。如果你想要真正的一对多,你需要添加/创建另一个字段并将它们设置为FooData表/实体上的复合键。

public class Foo {
    [Key]
    public string serialNumber{get; set;}
    public virtual ICollection<FooData> FooDatas{get; set;}
}

public class FooData {
  [Key, Column(Order = 0),ForeignKey("foo")]
  public string SerialNum {get; set;}
  [Key,Column(Order=1)]
  public int DataId {get;set;}
  public virtual Foo foo {get; set;}
}