ServiceStack.OrmLite:类名出现在不同名称空间中时发生表冲突

时间:2018-07-23 15:50:55

标签: servicestack ormlite-servicestack

当具有两个相同名称但在不同名称空间中的类时,ServiceStacks OrmLite无法区分两者。例如:

Type type = typeof(FirstNameSpace.BaseModel);
using (IDbConnection db = _dbFactory.Open())
{
     db.CreateTable(false, type); // Creates table "basemodel"
}
                        
type = typeof(SecondNamespace.BaseModel);
using (IDbConnection db = _dbFactory.Open())
{
     db.CreateTable(false, type); // Creates nothing as there already is a table 'basemodel', even though its a completely different object/class
}
                        

是否有一般,干净的方法来确保解决此问题?

被迫唯一地命名类是不理想的; .NET中名称空间的一部分是对不同的类进行分组和分类。另外,可能会有具有相同类名的第三方程序集,这些包不能为您更改。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

OrmLite使用类型名称作为表名称,因此您不能使用两个具有相同名称的不同类型。

您将需要重命名其中一种类型以避免冲突,或者使用[Alias(“ UseTableName”)]属性告诉一种类型使用不同的RDBMS表名称。