无法将A类隐式转换为通用类型

问题描述 投票:0回答:1

我们正在同一数据库上开发多个项目。可以说项目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是表列和值的对象。

c# entity-framework-6 generic-programming
1个回答
0
投票

这两种类型是完全不同的类型,因为它们在不同的名称空间中,即使它们具有相同的名称,属性等。您也不能直接在两者之间进行强制转换。

我的建议是将模型放在单独的库(项目)中,并从ProjectAProjectB引用该库。如果两个项目之间的存储库代码相同,也可以将存储库代码放入该库中。

© www.soinside.com 2019 - 2024. All rights reserved.