使用引用库中的对象作为实体框架模型?

时间:2017-09-19 11:55:37

标签: entity-framework

所以我正在构建一个基础库,我们称之为A,它有许多简单的类。该库不应使用Entity Framework引用,因为您可以在不使用数据库的情况下使用这些对象。

然后我有另一个名为A.EntityFramework的库,它应该添加使用Entity Framework将这些对象放入数据库的能力。

我的问题是,为了能够将它们与Entity Framework一起使用,我需要在基础库中的类定义上使用[Key],[Index]等属性。但是那些属性是在Entity Framework中定义的,该库没有引用...

解决这种情况的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以在OnModelCreating类的DbContext方法中定义这些属性。

例如:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    //Class1
    modelBuilder.Entity<A.Class1>.HasKey(p => p.ID);
    modelBuilder.Entity<A.Class1>.Property(p => p.Field1).IsRequired().HasMaxLength(50);

    //Class2
    modelBuilder.Entity<A.Class2>.HasKey(p => new {
        p.Key1,
        p.Key2
    });
    modelBuilder.Entity<A.Class2>.Property(p => p.Key1).IsRequired().HasColumnOrder(1);
    modelBuilder.Entity<A.Class2>.Property(p => p.Key2).IsRequired().HasColumnOrder(2);
}

您可以详细了解Entity Framework Fluent API here