当具有两个相同名称但在不同名称空间中的类时,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中名称空间的一部分是对不同的类进行分组和分类。另外,可能会有具有相同类名的第三方程序集,这些包不能为您更改。
有没有办法解决这个问题?
答案 0 :(得分:3)
OrmLite使用类型名称作为表名称,因此您不能使用两个具有相同名称的不同类型。
您将需要重命名其中一种类型以避免冲突,或者使用[Alias(“ UseTableName”)]属性告诉一种类型使用不同的RDBMS表名称。