我们正在同一数据库上开发多个项目。可以说项目A为名称空间ProjectA,另一个项目为ProjectB。当两者都首先使用DB时,Context将有所不同,但DbSet是通用的。当ProjectA创建上下文时,Table是ProjectA.Models.TableA,而ProjectB创建上下文时,Table是ProjectB.Models.TableA
现在,我想创建通用方法,以标识TableA并插入TableA记录。
我曾经识别过
string TableName = "TableName";
Type type = Assembly.GetExecutingAssembly().GetTypes().FirstOrDefault(t => t.Name == TableName);
对于我在下面使用的通用插入记录。
public static void Create<TEntity>(this DbContext db, TEntity entityToCreate) where TEntity : class
{
db.Set<TEntity>().Add(entityToCreate as TEntity);
}
当我尝试插入Create(db,item)时,item是表列和值的对象。
这两种类型是完全不同的类型,因为它们在不同的名称空间中,即使它们具有相同的名称,属性等。您也不能直接在两者之间进行强制转换。
我的建议是将模型放在单独的库(项目)中,并从ProjectA
和ProjectB
引用该库。如果两个项目之间的存储库代码相同,也可以将存储库代码放入该库中。