如何修改GROVE实体类的表名?

yuling_xia 2008-06-14 12:48:52


Customer.cs
using System;
using Grove.ORM;
[DataTable("Customers")]
public class Customer
{
int _CustomerID;
string _CustomerName;
string _CustomerDesc;
int _Status;

[KeyField("CustomerID")]
public int CustomerID
{
get{return this._CustomerID;}
set{this._CustomerID=value;}
}
}
上面是一个GROVE生成的实体类,请问如何动态修改
[DataTable("Customers")]中DataTable的名称?
也许我有好几个结构栏位完全相同的表,只是表名不一样。我不想创建多个实例。
...全文
121 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fengart 2008-08-20
回复
fengart 2008-08-20
尝试2: 替换DataContext生成的CommandText内容
因为LINQ TO SQL最终还是被翻译成SQL,所以本人又使用下面的方法进行测试:
DntDataContext ddc = new DntDataContext();
var exp = from u in ddc.Userinfo
orderby u.uid ascending
select u
string query = ddc.GetCommand(exp).CommandText.Replace("dnt_", "daizhj_");
var result = ddc.ExecuteQuery<Userinfo>(query, 0);
Console.WriteLine(((Userinfo[]) result.ToArray())[0].username);
上面代码段的ddc.GetCommand(exp).CommandText.Replace("dnt_", "daizhj_")是做的这个工作.
虽然这次采用替换方式解决了问题.但看了代码的朋友会发现,代码变得很丑,本人也是这么看的.即使封装
了也是很难受.没办法,放弃:(


尝试3: 继承并实现IQuerable接口

好在Matt Warren在他的文章中提到过如果建立一个IQueryable Provider(已修改, 更多内容参见这里).
另外LoveCherry也将这篇文章翻译了过来,大家有兴趣不妨看一下,很有意思,  详情点击这里:)

所以本人就直接使用了他在文中所说的方式.将DNTDataContext做了修改如下:

Code
[System.Data.Linq.Mapping.DatabaseAttribute(Name="dnt_2")]
public partial class DntDataContext : System.Data.Linq.DataContext
{


public Query<Userinfo> Userinfos; //该Query继承自IQueryable



public DntDataContext(System.Data.IDbConnection connection) :
base(connection, mappingSource)
{
QueryProvider provider = new DbQueryProvider((DbConnection)connection);
this.Userinfos = new Query<Userinfo>(provider);

}

}

引自:http://www.cnblogs.com/daizhj/archive/2008/05/12/1193283.html?
回复
SlaughtChen 2008-07-29
顶个
回复
ioul 2008-07-21
1.动态修改不是好的设计,结构虽然一样, 但是表示不同的实体, 当然要有对应的实体类了

2.动态修改会将简单问题复杂化
回复
相关推荐
发帖
LINQ
创建于2007-12-13

8496

社区成员

.NET技术 LINQ
申请成为版主
帖子事件
创建了帖子
2008-06-14 12:48
社区公告
暂无公告