LINQ TO SQL (一):1. 对象关系设计器(O/R 设计器)

对象关系设计器(O/R 设计器)的作用:

  1. 提供了一个可视化设计图面,用于创建基于数据库中对象的 LINQ to SQL 实体类和关系;创建映射到数据库中的对象的对象模型。

  2. 生成一个强类型 DataContext,用于在实体类与数据库之间发送和接收数据。

  3. 可以将存储过程和函数映射到 DataContext 方法以便返回数据和填充实体类。

  4. 提供了对实体类之间的继承关系进行设计的能力。

 

对象关系设计器(O/R 设计器)是什么?

  —— 是个 LINQ to SQL 类和数据库对象之间提供映射的 XX.dbml 文件,这个文件里有什么呢?——类型化的 DataContext 和实体类。

  —— 有两个不同的区域:左侧的实体窗格和右侧的方法窗格。

 

打开 O/R 设计器

  1. 在项目中添加新的“LINQ to SQL 类”项

  2. 说明: 

     a. O/R 设计器是一个简单的对象关系映射器,因为它仅支持 1:1 映射关系,

     b. 是一个单向代码生成器,这表示代码文件中只反映对设计器图面所做的更改,O/R 设计器中不会反映对代码文件的手动更改。

     c. 在保存设计器并重新生成代码时,将覆盖在代码文件中手动进行的所有更改

 

创建和配置 DataContext

  在向项目中添加“LINQ to SQL 类”项并打开 O/R 设计器后,空设计图面表示一个可供配置的空 DataContext。DataContext 是使用拖动到设计图面上的第一项所提供的连接信息进行配置的.

  1. DataContext 类是一个 LINQ to SQL 类,它充当 SQL Server 数据库与映射到该数据库的 LINQ to SQL 实体类之间的管道,DataContext 类包含用于连接数据库以及操作数据库数据的连接字符串信息和方法。

 

创建映射到数据库表和视图的实体类

  1. Entity 映射到数据库表和视图的 LINQ to SQL 类称为“实体类”。实体类映射到记录,而实体类的各个属性则映射到构成一条记录的各个列

  2. 实体类与数据库表或视图之间只能具有 1:1 映射关系。不支持复杂映射(例如,将一个实体类映射到多个表)。但是,可以将一个实体类映射到一个联接多个相关表的视图。

  3. 通过将表或视图从“服务器资源管理器”/“数据库资源管理器”拖动到 O/R 设计器上,除了可以创建用于执行更新的 DataContext 方法以外,还可以创建实体类。

  

LINQ to SQL 对象模型                         :

  1. 在 LINQ to SQL 中,用开发人员所用的编程语言表示的对象模型映射到关系数据库的数据模型。然后就会按照对象模型来执行对数据的操作。

      

  

  下表概括了 LINQ to SQL 对象模型中最基本的元素及其与关系数据模型中的元素的关系:

        

LINQ to SQL 实体类与数据库表                                                                       (基于属性的映射 (LINQ to SQL))

  在 LINQ to SQL 中,数据库表由实体类表示。实体类与您可能创建的任何其他类相似,只不过对实体类进行批注的方法是使用将该类与数据库表关联的特殊信息。您需通过向类声明中添加自定义属性 (TableAttribute) 来进行这种批注,如下面的示例所示:LINQ to SQL 仅支持单表映射关系即,实体类必须只映射到一个数据库表,且无法同时将数据库表映射到多个类。

  您可以使用 TableAttribute 属性 (Attribute) 的 Name 属性 (Property) 来指定表名称,并可以选择使用架构名称来限定表名称。如果您未使用 Name 属性指定名称,则假定表名称与类名相同。

 

复制代码

 

[Table(Name = "Customers")]
public class Customerzz
{
public string CustomerID;
// ...
public string City;
}

复制代码

  只有声明为表的类(即实体类)的实例才能保存到数据库中。

LINQ to SQL 类成员与数据库列

  除了将类与表关联以外,您还需指定字段或属性来表示数据库列。为此,LINQ to SQL 定义了 ColumnAttribute 属性,如下面的示例所示:

 

复制代码

 

[Table(Name = "Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public string CustomerID;
[Column]
public string City;
}

复制代码

 

  只有映射到列的字段和属性才能持久保存到数据库中,从数据库中也只能检索这样的字段和属性。那些未声明为列的字段和属性被视为应用程序逻辑的瞬态部分。

LINQ to SQL 关联与数据库外键关系

  在 LINQ to SQL 中,数据库关联(如外键到主键关系)是通过应用 AssociationAttribute 属性表示的。在下面的代码段中,Order 类包含具有 AssociationAttribute 属性 (Attribute) 的 Customer 属性 (Property)。此属性 (Property) 及其属性 (Attribute) 为 Order 类提供了与 Customer 类的关系。

  下面的代码示例显示了 Order 类中的 Customer 属性 (Property)。

 

复制代码

 

[Association(Name="FK_Orders_Customers", Storage="_Customer", ThisKey="CustomerID", IsForeignKey=true)]
public Customer Customer
{
get
{
return this._Customer.Entity;
}
set
{
Customer previousValue = this._Customer.Entity;
if (((previousValue != value)
|| (this._Customer.HasLoadedOrAssignedValue == false)))
{
this.SendPropertyChanging();
if ((previousValue != null))
{
this._Customer.Entity = null;
previousValue.Orders.Remove(this);
}
this._Customer.Entity = value;
if ((value != null))
{
value.Orders.Add(this);
this._CustomerID = value.CustomerID;
}
else
{
this._CustomerID = default(string);
}
this.SendPropertyChanged("Customer");
}
}
}

复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode - 1235. hard】规划兼职工作

题干: 先来看简单版本: n个区间,求最大的不相交区间数 【51NOD—贪心算法专题】 D 做任务一 区间贪心最大不相交子区间数_荷叶田田_的博客-CSDN博客 如果限定这道题的报酬都是1,那么就转化成【最大不相交区间数】了。 那道题…

HTML 链接 强制打开“另存为...”弹出式文本链接打开HTML

现在的HTML5里有一个download属性&#xff0c;可以直接进行另存为&#xff0c;还可以自己重新命名文件。。。 <a href"file link" download"filename.ext" target"_blank">Click here to download</a> HTML <a> download 属性…

Office web app server2013详细的安装和部署

SharePoint 2013集成Office web apps server2013详细的安装和部署 安装前的需要理解的&#xff1a; 1、Office Web Apps 只能由使用基于声明的身份验证的 SharePoint 2013 Web 应用程序使用。Office Web Apps 呈现和编辑在使用经典模式身份验证的 SharePoint 2013 Web 应用程序…

借助office web apps实现在线预览和在线编辑

我所有的代码都是用go语言编写&#xff0c;你可以直接编译后使用&#xff0c;不用再有其他的操作。 最近项目实在太忙&#xff0c;这几天才有时间&#xff0c;这次是重头戏&#xff0c;要好好琢磨一下怎么写&#xff0c;才能更简洁的说清楚一切。 上一节&#xff0c;我们已经安…

Dbml文件提取建表TSql-CodeSmith

在昨天一个大学师弟&#xff0c;他问我能不能将LinqToSql文件转化为创建表的TSql语句&#xff0c;他是刚开始学习.NET&#xff0c;所以在网上下些示例看&#xff0c;但苦于没有数据库。所以就有了这一篇博客&#xff0c;作为我的Code生成技术的CodeSimth的最后一篇示例。在下一…

【转】新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序(续1)

上周星期天开通了博客并发布了第一篇文章《新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序》&#xff0c;汇集了一些比较流行的技术和开源项目&#xff0c;也把自己的程序架构、部分代码风格、前端表现简单做了一些展示&#xff0c;引起了近100位朋友的评论。特…

CCNA-Cisco-Packet-Tracerchs(思科官网)安装教程以及使用

Cisco-Packet-Tracerchs 思科官网模拟器&#xff0c;各大高校与中职都在使用。 但是由于支持的命令不太多&#xff0c;适用于NA阶段以及入门阶段的人群使用。 以下是免费百度网盘链接&#xff1a; https://pan.baidu.com/s/136fsYRnAfzGoj0DsQFaYTg 提取码: qa4e 复制这段内容…

CCNA-VLAN讲解与交换机三种端口模式(Acess,Trunk,Hybrid)小白入门级

VLAN讲解与三种端口模式(Acess,Trunk,Hybrid) TAG:所有文章均为原创&#xff0c;可以转载但请声明&#xff0c;是在学校里面做的&#xff0c;使用不了EVE和ENSP&#xff0c;请各路大神嘴下留情&#xff0c;如文章内容有误导请及时联系博主----来自一个17岁的中专生。 1.什么是V…

【转】2015-新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序

在博客园学习很长时间了&#xff0c;今天终于自己也开通了博客&#xff0c;准备分享一些感悟和经验。首先感谢博客园园主提供了这么好的程序员学习交流平台&#xff0c;也非常感谢张善友、dax.net、netfocus、司徒正美 等技术大牛的无私分享&#xff0c;从他们身上学到了很多。…

工作篇-佛山三水恒大-2020.10.23

** 工作篇-佛山三水恒大-2020.10.23 **人生第一次工作啊啊啊啊啊 其实按道理来说&#xff0c;第一次应该会很很紧张吧&#xff0c;不过我倒没有。 也不知道是我不怕还是什么&#xff0c;一切进行的挺顺利的。 前言&#xff1a;讲真那句&#xff0c;第一次做的话&#xff0c;…

UWP 使用OneDrive云存储2.x api(一)【全网首发】

最近开发人脸识别UWP【微识别 / WeRecognition】用到了OneDrive开发&#xff0c;下面把来龙去脉讲一下。 下载地址 https://www.microsoft.com/store/productId/9PDSNS7X9ST9&#xff0c;商店火爆热销中。。。。。。 由于UWP是跨平台的&#xff0c;一套代码可以运行在所有Wind…

UWP 使用OneDrive云存储2.x api(二)【全网首发】

上一篇提到为了给用户打造一个完全无缝衔接的最佳体验&#xff0c;UWP开发者最好也要实现App设置和数据的跨平台 分析了数据漫游和OneDrive的优缺点&#xff0c;结合自己App实际需要&#xff0c;我选择了OneDrive。 毕竟数据漫游100KB不够用啊。。。 这一次给大家我千辛万苦找…

在Sharepoint 2010中使用ReportViewer控件展示RDLC报表

微软的Visual studio提供了ReportViewer控件以及RDLC报表设计工具。下文主要介绍如何在Sharepoint 2010项目开发中使用ReportViewer和RDLC生成项目报表。由于Sharepoint 2010默认是禁用Session的&#xff0c;而RDLC报表必须启用Session。因此在Sharepoint的站点中要使用RDLC生成…

工作篇-佛山三水恒大-2020.11.13

** 工作篇-佛山三水恒大-2020.11.14 **TAG:此篇文章估计会很长,因为工作的时候变数太多了,预计五千字左右,想看的可以耐心看完,均为个人实战经验.害,其实是上学期间请假去做的,还挨批了. **到了现场tm的那个机房,小到我哭,站都没地方站,刚装修好全tm都是白灰,我穿的一身黑衣…

Windows Workflow Foundation(WWF)介绍

Windows Workflow Foundation&#xff1a;支持基于工作流的应用程序 工作流是一个简单思路&#xff1a;按照特定顺序执行的一系列步骤。您甚至可以认为每个应用程序都在执行工作流&#xff0c;因为每个应用程序都执行某些过程。但是&#xff0c;在使用 C#、Visual Basic 或其他…

CCNA-第五篇-基础命令集+设备升级+设备破解密码+IP地址{精髓篇}

** CCNA-第五篇-基础命令集 ** 1.基础命令集 思科设备 : IOS 华为设备: VRP 启动步骤&#xff1a;加电自检-加载系统(IOS/VRP&#xff09;-运行配置&#xff08;保留的cfg或者conf文件&#xff09; 命令行统一称为CLI,CLI是啥呢,命令 简介&#xff1a;CLI一般指命令行界面。…

你还记得windows workflow foundation吗

很多年前&#xff0c;windows workflow foundation还叫WWF&#xff0c;而直译过来的名称让很多人以为它就是用来开发工作流或者干脆就是审批流的。 博主当年还是个懵懂的少年&#xff0c;却也知道微软不会大力推一个面向如此具象的业务场景的技术&#xff0c;于是特地找了一本…

SharePoint Desiger编辑模板时提示“服务器错误,拒绝访问”的解决之道

这篇文件已被微软收藏。http://technet.microsoft.com/zh-cn/ff683721.aspx各位同志好&#xff0c;很多同志都用过SharePoint designer来编辑模板。经常出现“服务器错误&#xff0c;拒绝访问”。场景描述&#xff1a;我们办公电脑是XP系统。XP系统我们是用自己的域用户名密码登…

CCIE理论-第六篇-SD-WAN网络(一)

** CCIE理论-第六篇-SD-WAN网络 ** 1.SD-WAN介绍 1.什么是SD-WAN SD-WAN Software Defined 软件定义WANWide Area Network 广域网外网通俗的说企业网关可以慢慢的代替传统组网(大趋势)主要作用,省钱,简单,智能.易管理 传统方式 -Internet专线 (固定IP上下行带宽对等) -PPPOE …

【转】TFS测试管理

微软2010年发布的Visual Studio 2010或Visual Studio Test Professional 2010包含一个称为 Microsoft 测试管理器的新应用程序&#xff0c;用于帮助您使用测试计划来定义和管理测试工作。 Microsoft 测试管理器通过Team Foundation Server 集成&#xff0c;使您可以方便地进行测…