我是Dapper Rainbow的新手,所以我可能会遗漏一些明显的东西。是否可以指定表名,如果可以,如何指定?
我试过以下但没有运气。
public class DashboardContext : Database<DashboardContext>
{
public DashboardContext()
{
this.DashboardResults = new Table<DashboardResult>(this, "Monitor.DashboardResult");
}
public Table<DashboardResult> DashboardResults { get; set; }
}
答案 0 :(得分:1)
我遇到了同样的问题但是代码中似乎有错误。我刚刚评论了为表格(Database.cs)设置构造函数的行,并且它可以工作。
internal void InitDatabase(DbConnection connection, int commandTimeout)
{
this.connection = connection;
//this.commandTimeout = commandTimeout;
//if (tableConstructor == null)
//{
// tableConstructor = CreateTableConstructorForTable();
//}
//tableConstructor(this as TDatabase);
}
我想这不是最好的解决方案......
答案 1 :(得分:0)
你需要破解彩虹源才能让它发挥作用。
在DataBase.cs文件中找到CreateTableConstructor
方法。
只需添加一些代码如下:
...
var setters = GetType().GetProperties()
.Where(p => p.GetValue(this, null) == null
&& p.PropertyType.IsGenericType
&& p.PropertyType.GetGenericTypeDefinition() == tableType)
.Select...
答案 2 :(得分:0)
对于像我这样在这篇帖子上踩到这个帖子的其他人现在已经修复了Dapper.Rainbow版本0.1.3。
此时它仍处于测试阶段(0.1.3-beta1),因此如果您想使用模式,您可以克隆/分叉存储库并运行构建脚本。然后可以直接使用二进制输出或打包。
对于表设置,您需要使用该特定表的模式名称定义表名,例如,查看此示例而不使用模式
public class MyDatabase : Database<MyDatabase>
{
public Table<Order> Order{ get; set; }
public Table<Customer> Customer { get; set; }
public Table<Item> Item { get; set; }
}
如果您只使用dbo,哪个有效。但是如果您使用例如Item的Product schema,则必须使用构造函数
来定义它 public class MyDatabase : Database<MyDatabase>
{
public Table<Order> Order{ get; set; }
public Table<Customer> Customer{ get; set; }
public Table<Item> Item;
public MyDatabase()
{
Item = new Table<Item>(this, "Product.Item");
}
}
其余的应该像以前一样
using (var connection = DbConnections.Create())
{
connection.Open();
var db = MyDatabase.Init((DbConnection)connection, commandTimeout: 2);
var insert = db.Customer.Insert(
// .
//..... your object
// .
);
var insertId = insert.Value;
}