使用“EF-Code First”时,我得到一个ModelValidationException(在底部)。它要我定义一个Key,但我不确定它到底是什么意思......
public class Unit
{
Guid id;
String public_id;
String name;
bool deleted;
}
public class MyDataContext : DbContext
{
public DbSet<Unit> Units { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Unit>().ToTable("sometable");
}
}
[TestFixture]
public class DataTests
{
[Test]
public void Test()
{
MyDataContext database = new MyDataContext();
var o = database.Units;
Console.WriteLine(o.Count()); // This line throws!
Assert.IsTrue(true);
}
}
System.Data.Entity.ModelConfiguration.ModelValidationException:在模型生成期间检测到一个或多个验证错误:
System.Data.Edm.EdmEntityType :: EntityType'Unit'没有定义键。定义此EntityType的密钥。
System.Data.Edm.EdmEntitySet:EntityType:EntitySet Units基于没有定义键的类型Unit。
答案 0 :(得分:8)
制作字段属性,然后使用[Key]
属性,如下所示:
[Key]
public Guid MyId { get; set; }
您必须引用并导入System.ComponentModel.DataAnnotations以获取KeyAttribute。 More info can be found here
答案 1 :(得分:3)
您需要为希望EF为其创建数据库字段的所有字段使用属性,而不是私有局部变量。
Public Guid Id {get;设置;}
答案 2 :(得分:0)
如果您使用列名,则不使用[Key] public Guid UnitID {get;组; } 然后EF将此列视为关键列。