怎么判断实体店铺招牌包含元素Model中包含数据

ThinkPHP中没有对应的数据表怎么创建模型
TP的模型的默认情况是一个数据表对应一个Model类
如果你的模型是没有确定的数据表可以对应(或者说需要操作多个数据表),在这种情况下,应该如何创建模型呢?
其实,TP提供了一个机制来解决这样的问题,尤其是你需要经常使用原生SQL的时候,这个机制会非常有帮助。
下面来看一段代码:
$Model = new Model();
$list&&= $Model-&query('select * from think_user where status=1');
当我们直接实例化Model基类的时候,是不会进行任何数据库的连接的,也不会缓存任何数据表的字段信息,所以这个模型更加纯净一点,开销也相当比较小。
当然,并不是说,在这种方式下就只能使用原生查询,你可以很好的利用新版的连贯操作功能来查询数据。例如:
$Model = D(); // 和上面的new Model()等效
// TP的连贯操作的优势之一就是可以动态设置要查询的数据表
$list = $Model-&field('id,name')-&table('think_user')-&where('status=1')-&findall();
以上的数据库连接信息都是在项目配置文件里面设置的,大家还可以结合TP的多数据库连接设置的知识来使用。
请各位遵纪守法并注意语言文明(window.slotbydup=window.slotbydup || []).push({
id: '2014386',
container: s,
size: '234,60',
display: 'inlay-fix'
(31人评价)
&&|&&24次下载&&|&&总654页&&|
您的计算机尚未安装Flash,点击安装&
阅读已结束,如需下载到电脑,请使用积分()
0人评价31页
1人评价64页
0人评价65页
0人评价32页
0人评价55页
所需积分:(友情提示:所有文档均可免费全文预览!下载之前请务必先预览阅读,以免误下载造成积分浪费!)
(多个标签用逗号分隔)
文不对题,内容与标题介绍不符
广告内容或内容过于简单
文档乱码或无法正常显示
若此文档涉嫌侵害了您的权利,请参照说明。
10016.19MB
评价文档:c#中使用三层访问方法中如何连接数据库,与model(实体和数据库表映射类)怎么连接的?需要代码和解释。_百度知道这是一个程序猿的独立博客,主要分享与编程技术有关的内容,包括.NET、数据库、WEB前端、网站开发与建设、各种开发工具和插件等。
这里也是博主记录工作经验和生活感悟的地方。
PS:博主是一名.NET程序员,也是一名草根站长,目前主要从事ASP.NET网站开发工作,更多信息请点击。
文章总数:240
评论总数:109
浏览总数:378059
本月文章:2
本站作品采用进行许可。实体数据模型:外键巧用
发表于 17:05|
来源分享VB,畅“享”VB 博客|
作者chenqiuge1984
摘要:概念模型中是否包含F外键一列争议已久,在VS 2010中创建实体数据模型时是否用外键由开发者去决定。但在某些情况下外键还是有突出作用的。
Yang Cao曾写过一篇博文《》,为我们分析了虽然概念模型中是否包含FK(外键)现在还存在争议,但外键在某些情况下还是有突出作用的。他并用程序说明了这一点。《》博客版主对此文进行了,全转载于此,供大家学习:
概念模型中是否包含FK(外键)一列争议已久,因此Visual Studio 2010在创建实体数据模型的向导中添加了一个复选框。这样,是否使用外键由开发者自己去决定。昨天我做了一些有趣的事情,发现了外键在下面介绍的情况下有着突出的作用。
我的应用程序十分简单:将A中与Order相关的客户移到B中。
如果FK(CustomerID)在Order这个实体当中存在,我要做的,仅仅是针对外键建立一个查找绑定,然后调用dataContext.SaveChanges()。如何使用拖拽的方法在组合框组件上创建一个查找绑定?首先,将FK列(本例中Order实体的CustomerID列)拖拽到窗体上,与此同时将会生成一个组合框,然后将与之相关的查询表(Customer实体)拖拽到刚才生成的组合框上,这样之后,SelectedValue、SelectedValuePath,、 ItemsSource和 DisplayMemeberPath等属性就会自动设置。
如果实体中并不存在FK列,事情将变得稍微麻烦一点。
将Orders绑定到DataGrid上
这个步骤很简单,只需要将Orders节点拖拽到WPF设计器上。
针对组合框创建一个查询绑定
因为在这个模型中,我没有FK列,也就是说在Order实体中不存在CustomerID属性。为了创建一个查询绑定,我需要将Orders中的Customer实体展开,将CustomerID绑定到一个组合框上。
当把这个节点拖拽到WPF设计器上之后,我就创建了一个复合绑定。为了将它转换成一个查询绑定,我会将这个新创建的组合框链接到查询表上。为了达到这个目的,我们首先将Customers节点(上图中标记为2)拖拽到组合框上,你会注意到在这个过程中你的鼠标将会由&+&变成一个箭头,这表明我们并没有创建新的控件,而是使已有的控件根据拖拽上来的资源进行更新。
创建一个按钮保存修改
然后我会添加一个按钮&Update Customer&,在它的点击处理事件当中,我需要找到当前选中的order,获取新的CustomerID去替换之前的FK的值,保存修改:
Order currentOrder = (Order)ordersViewSource.View.CurrentI
string customerID = customerIDComboBox.SelectedValue.ToString();
currentOrder.CustomerReference.EntityKey.EntityKeyValues[0].Value = customerID;
northwindEntities.SaveChanges();
为了简化代码,在MainWindow类中,我将DataContext(northwindEntities)和 CollectionViewSource(ordersViewSource)设置成属性。我需要在Order下,找到 CustomerReference并且设置EntityKeyValue
调试程序,一开始一切都进行的很顺利,但是当我在组合框中由一个customer切换到另一个时,弹出一个异常---- InvalidOperationException:CustomerID是对象键值信息的一部分,不允许修改。尽管我成功的创建了查询绑定,但是却不能修改它的值,因为SelectedValue不是Order的外键,而是Customer的主键!
这个异常提醒我,组合框应该绑定为OneWay模式。我在XAML文件中找到组合框,更新了SelectedValue的绑定模式:
SelectedValue=&{Binding Path=Customer.CustomerID,Mode=OneWay}&
现在改变组合框中的选项不会再弹出刚才的异常。我点击&Update Customer&按钮继续测试,出现另一个异常:EntityKey一经设定,不能再做修改。我就不信办不到,我到网上开始搜索,然后发现,尽管 EntityKey无法重新设置,但是实体的键值是可以的。现在我们对FK的值进行以下修改:
currentOrder.CustomerReference.EntityKey = new System.Data.EntityKey(currentOrder.CustomerReference.EntityKey.EntityContainerName+&.&+ currentOrder.CustomerReference.EntityKey.EntitySetName,&CustomerID&, customerID);
如果你拥有的是一个复合键,你可以使用KeyValuePair。想要了解更多,请看这里。
完成以上所有步骤,我的程序总算如所期望的那样工作了。也许你会问,为什么你不简单的在设计中包含外键,以避免这些不必要的额外代码和可能出现的异常?那我会告诉你,如我之前所说的,有些设计者,在概念模型中,并不倾向于包含FK列,因为FK是关系数据库中的概念。另一个原因是,包含FK的功能在 Visual Studio 2010里新添加的表中才开始得应用,如果你有一个已存在的实体数据模型,那么你始终得习惯没有FK的生活。
原文链接:
译文链接:
推荐阅读相关主题:
网友评论有(0)
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 model实体类 的文章

 

随机推荐