首页 > 解决方案 > 与 ef 对话和可定制的 asp.net 类库

问题描述

我正在尝试制作一个仅包含 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。它是空的,但它插入到数据库中。

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

标签: c#asp.netasp.net-mvcentity-frameworkclass-library

解决方案


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

要给类一个不同的表名,您可以使用 fluent API 执行此操作,但由于您不想这样做,您可以使用该[Table]属性

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

2.我有一个新的列,它两个数据库都称为鉴别器。那是什么?我要删除它吗?

鉴别器列用于识别每行代表的类型。 查看文档


推荐阅读