在使用"EF-Code First"时如何定义键?

gin*_*boy 5 asp.net entity-framework code-first c#-4.0

使用"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);
    }
}
Run Code Online (Sandbox Code Playgroud)

System.Data.Entity.ModelConfiguration.ModelValidationException:在模型生成期间检测到一个或多个验证错误:

System.Data.Edm.EdmEntityType :: EntityType'Unit'没有定义键.定义此EntityType的键.

System.Data.Edm.EdmEntitySet:EntityType:EntitySet Units基于类型Unit,没有定义键.

Tim*_* P. 8

创建字段属性,然后使用如下[Key]属性:

[Key]
public Guid MyId { get; set; }
Run Code Online (Sandbox Code Playgroud)

您必须引用并导入System.ComponentModel.DataAnnotations以获取KeyAttribute.更多信息可以在这里找到.


Jam*_*ris 3

对于希望 EF 创建数据库字段的所有字段,您需要使用属性,而不是私有局部变量。

公共引导 ID {get; 放;}