如何修改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的名称?
也许我有好几个结构栏位完全相同的表,只是表名不一样。我不想创建多个实例。
...全文
172 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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.动态修改会将简单问题复杂化

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧