DBFast是用了操作实体类用的吧,这个类不能修改连接的数据库,只能使用默认的AppConfig的conn配置
其实情况是这样,看了http://www.cnblogs.com/cyq1162/p/3213531.html一文中用的是实体型(充血型的ORM操作 )然后我项目中用的都是纯实体型,所以想通过纯实体型操作,结果发现了问题是这样的
using (var action = new MAction("MapRoute", "txt path={0},ts=0"))
{
action.Select("").ToList<MapRoute>();
}
错误提示
V5.6.6.3 Txt.,ts=0:check the tablename "MapRoute" is exist?
如:MapRoute实体的完整名称为:XXX.Abc.MapRoute
那么数据库链接的检查顺序是:AbcConn ,如果找不到,就会找默认的Conn
也就是由类名的上一级名称空间先决定链接。
补充说明:
可以看DBFast的源码实现:
public static int GetCount<T>(object where) { using (MAction action = GetMAction<T>()) { return action.GetCount(where); } } private static MAction GetMAction<T>() { string conn = string.Empty; MAction action = new MAction(GetTableName<T>(out conn), conn); //action.SetAopOff(); return action; } private static string GetTableName<T>(out string conn) { conn = string.Empty; Type t = typeof(T); string[] items = t.FullName.Split('.'); if (items.Length > 1) { conn = items[items.Length - 2] + "Conn"; items = null; } string tName = t.Name; t = null; if (tName.EndsWith(AppConfig.EntitySuffix)) { tName = tName.Substring(0, tName.Length - AppConfig.EntitySuffix.Length); } tName = CYQ.Data.Tool.DBTool.GetMapTableName(conn, tName); return tName; }
这我看了啊,问题是木有想象中的,可以在外部修正自己想连接的数据库,因为我是想用这个来访问一个配置文件的,也许其他位置写另外一个会访问其他配置文件,如果都靠名称空间来区别并访问web.config获取感觉不太合理吧
@uxinxin:
你的需求没怎么看的确定,有点模糊。
如果需要方案,可以把需求说的清楚明白些。
也可以使用MAction。
@路过秋天:
是这样,我看了金牛座框架之后,感觉这个路由一块写的有点儿死,想改造一下,我想把路由配置写到一个txt或者xml文件里面,反正现在不会操作就是了
格式是这样的
1 {"ID":"System.Int32","Urltemplate":"System.String","Default":"System.String"}, 2 {"ID":1,"Urltemplate":"{controller}/{action}/{id}","Default":{"controller":"home","action":"index","id":"0"}}, 3 {"ID":2,"Urltemplate":"{controller}","Default":{"controller":"home","action":"index"}}
上面这个我是通过下面代码创建的
public class MapRoute: CYQ.Data.Orm.OrmBase { public MapRoute() { base.SetInit(this, "MapRoute", "txt path={0};ts=0"); } public int ID { get; set; } public string Urltemplate { get; set; } public object Default { get; set; } }
using (MapRoute mapRoute = new MapRoute()) { mapRoute.Urltemplate = "{controller}/{action}/{id}"; mapRoute.Default = JsonHelper.ToJson(new Dictionary<string, string> { { "controller", "home" }, { "action", "index" }, { "id", "0" } }); mapRoute.Insert(InsertOp.None); }
但实际上,我想用下面这样的实体类型创建,该如何操作
public class MapRoute { public int ID { get; set; } public string Urltemplate { get; set; } public object Default { get; set; } }
,并且,接下来我需要可以重新获取回来到一个List<MapRoute>里面
然后有了
using (var action = new MAction("MapRoute", "txt path={0},ts=0")) { action.Select("").ToList<MapRoute>(); }
这个写法
但是直接提示了V5.6.6.3 Txt.,ts=0:check the tablename "MapRoute" is exist?这样的错误
@uxinxin:ts=1
@路过秋天:
ts=1之后报的错误
V5.6.6.6 Txt.,ts=1:check the tablename "MapRoute" is exist?
@uxinxin: 在ORMBase那里指定ts=1,生成了*.ts数据结构之后,才能用MAction操作。
@路过秋天: 是啊,我现在报的错误就是改成1之后运行才产生的……
@路过秋天: 找到问题了,因为我ts=1前面应该用;的写成了逗号……,谢谢了