与ef对话并且可定制的asp.net类库

时间:2018-08-16 08:06:58

标签: c# asp.net asp.net-mvc entity-framework class-library

我正在尝试创建一个仅包含may app核心逻辑的类库。 我看过很多教程,但是它们在该库中包含EF核心。我想做的只是放所有这样的逻辑,通过传递string添加一个类别(如果尚不存在)。

这是我想做的

  1. 在单独的项目中创建一个类库。
  2. 添加一个名为 SomeName Manager的类-[包含我想要的所有方法]
  3. 创建要为此manager修改的模型,但我不希望它成为直接用作我的实体的类。我只希望它成为我的自定义实体的基类。例如,如果我必须添加新属性,则只需在主应用程序中更改实体。不在图书馆里。
  4. DbContext仅在我的主应用程序中。这意味着我在库中使用的所有类和列表都将位于内存中。

这是我到目前为止所得到的

// class library
public interface IBook{
    // some properties here
    ICollection<ICategory> Categories { get; set; }
    // some more properties...
}
public interface ICategory{
    // some properties here
    ICollection<IBook> Books { get; set; }
    // some more properties...
}

public class Book : IBook {
    // implementations...
}
public class Category : ICategory {
    // implementations
}

public class BookManager {
    public void CreateBook(Book book) {
        // some logic
        // I'm not sure if I would pass Book or IBook
    }
    public void AddCategories(List<Category> categories) {
        // some logic
        // I'm not sure if I would pass Category or ICategory
    }
}

// my main app
public class BookInfo {
    // some props...
}
public class BookCategory {
    // some props...
}

public class MyDB : DbContext{
    public DbSet<BookInfo> BookInformations {get; set;}
    public DbSet<BookCategory> BookCategories {get; set;}
}

问题

  1. 我数据库中的表名称为Book。我不想使用流畅的API来重命名它。
  2. 我在这两个数据库中都有一个名为Discriminator的新列。那是什么?我要删除吗?
  3. 类别未绑定到Book.Categories。它为空,但会插入数据库中。

其他问题 我这样做对吗? 这是一个坏主意吗?请赐教。我不是初学者,但我还没有加入过真正的开发团队。

1 个答案:

答案 0 :(得分:1)

1。我数据库中的表名是Book。我不想使用流畅的API来重命名它。

要给一个类一个不同的表名,您可以使用fluent API做到这一点,但是由于您不想这样做,可以为此使用[Table] attribute

[Table("BookTableName")]
public class Book : IBook {
    // implementations...
}

2。我在它的新数据库中都将其称为Discriminator。那是什么?我要删除吗?

  

鉴别符列用于识别每一行代表哪种类型。   See the docs