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,一经查实,立即删除!

相关文章

LINQ TO SQL和Entity Framework 的关系 你了解多少?

1. LINQ TO SQL 和EF 特点: LINQ TO SQL和Entity Framework都是一种包含LINQ功能的ORM 也就是所谓的关系对象的映射。其中包括的有DBFrist Code Frist ModeL Frist 三种中方式 来进行和数据库之间的访问。只是形式不同而已本质没有什么区别。都是ORM 之间…

【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 属性…

【转】 CPU、MCU、MPU、DSP的区别和介绍

CPU&#xff1a; 中央处理器&#xff08;CPU&#xff0c;Central Processing Unit&#xff09;是一块超大规模的集成电路&#xff0c;是一台计算机的运算核心&#xff08;Core&#xff09;和控制核心&#xff08; Control Unit&#xff09;。它的功能主要是解释计算机指令以及…

禁止word另存为,禁止图片另存为excel禁止另存为

在很多企事业单位&#xff0c;处于商业机密保护的需要&#xff0c;常常需要禁止一些文件格式的“另存为”功能&#xff0c;防止通过“另存为”将文件另行保存&#xff0c;据为己有的目的&#xff1b;尤其是在局域网中访问服务器共享文件的时候&#xff0c;常常需要禁止将共享文…

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;我们已经安…

【转】WOPI host消息体结构

wopi协议通过JSON格式传递参数&#xff1a; {"AllowExternalMarketplace":{"type":"bool","default":false,"optional":true},"BaseFileName":{"type":"string","optional":false}…

Dbml文件提取建表TSql-CodeSmith

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

(译)你应该知道的jQuery技巧

帮助提高你jQuery应用的简单小技巧。 回到顶部按钮图片预加载判断图片是否加载完自动修补破损图像Hover切换class类禁用输入停止正在加载的链接toggle fade/slide简单的手风琴使两个DIV同等高度在浏览器标签/新窗口打开外部链接根据文本获取元素可见变化的触发Ajax调用错误处理…

DNS的A、CNAME、MX、NS、TXT、SPF记录

前言 最近工作过程中需要设定邮件服务器&#xff0c;其中涉及到dns服务器的设定。 整理并且记录自己的理解。 种类 A、CNAME、MX、NS、TXT、SPF 下面挨个介绍一下。 A记录/AAAA记录 IPv4&#xff1a; 示例&#xff1a;ns1.exmaple.com. IN A 198.51.100.2解释&#xff1a…

【转】新思想、新技术、新架构——更好更快的开发现代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…

CCNA-第一篇-基础入门概念

** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很忙的,时间都是挤出来的. 一.网络基本概念入门 网络设备调试最基本的概念网络环境设计设…

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

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

CCNA-第二篇-路由器交换机概述

CCNA-第二篇-路由器交换机概述 为什么交换机可以转发&#xff1f; 1.使用MAC地址表 2.MAC地址表怎么来的呢&#xff1f;交换机自动学习 问题来了&#xff1a;PC是如何知道对端的MAC地址的呢&#xff1f; 我们在通信的到时候&#xff0c;不可能问你MAC多少吧&#xff0c;一般都是…