Linq to SQL加注Data Annotation在Asp.Net MVC2中的应用

一.写作前提

最近正在做一个Asp.Net MVC2的Project,用到了Linq to SQL,但是对于如何在MVC2中使用 Linq to SQL 生成的强类型加注Data Annotation,我们都知道在MVC2中我们可以定义自己的Model,然后给Model 加Data Annotation,从而在View中可以实现完美的Client Validation(这些Data Annotation也我们也可 以去自己定义)。但是对于Linq to SQL 生成的强类型,我们有两个问题,第一,应该如何实现它的Data Annotation;第二,当我们的Database结构发生改变时,我们通常需要把Linq to SQL里相应的对象先删 除,然后再重新映射,这时我们如何保证我们加的Data Annotation只需要进行最小的改动就可以完成对 新映射的支持?

下面我们就上面的问题进行分析和提出我们的解决方案。

二.通常MVC的做法

首先我们来做一个比较,自定义Model加Annotation,如表1所示:

图表1:Product Class 的定义

1 public class Product
2 {
3   [DisplayName("Product Name")]
4    [Required(ErrorMessage="Product Name is Required.")]
5   [StringLength (50,ErrorMessage="Max Length of Product Name can not greater than 50  characters.")]
6     public string Name
7     {
8        get;
9       set;
10     }
11
12   [DisplayName("Product  Type")]
13   [Required(ErrorMessage = "Product Type is Required.")]
14    [StringLength(20, ErrorMessage = "Max Length of Product Name can not greater than  20 characters.")]
15   public string Type
16   {
17     get;
18      set;
19   }
20 }

时间: 2016-11-18

Linq to SQL加注Data Annotation在Asp.Net MVC2中的应用的相关文章

Asp.net MVC2中你必须知道的扩展点(一):Controller Factory

Asp.net mvc2中提供很多可以扩展的地方,利用这些扩展之后,asp.net mvc使用起来更加灵活. Simone Chiaretta曾写过一篇文章:13 ASP.NET MVC extensibility points you have to know.文章中 概括性的介绍了13个asp.net mvc开发人员必须知道的扩展点.我将从这13个扩展点中挑选几个常见的重 要的扩展点进行详细的介绍.这篇将文章将首先介绍Controller Factory. Controller Factor

Asp.net Mvc2中重构View的三种方式

我们在Asp.net mvc的view开发过程中,如果不注意可能会写大量的重复的代 码.这篇文章介绍3种方式重构View的代码,来减少View中的重复代码. 1.母板页 在Asp.net mvc中保留了母板页的使用,我们可以使用母板页对我们的站点进 行布局.看下面母板页的代码: <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <!DOCTYPE html PU

Asp.net MVC2中你必须知道的扩展点(二):Model Binder

Model Binder在Asp.net MVC中非常简单.简单的说就是你控制器中的Action方法需要参数数据:而这 些参数数据包含在HTTP请求中, 包括表单上的Value和URL中的参数等.而ModelBinder的功能就是将这些个表单上的Value和URL中的参 数换成对象,然后将这些对象绑定 到Action的参数上面.我简单的画了一个图,看起来会更加直观. 在asp.net mvc中你可以写类似下面这样的代码: [HttpPost] public ActionResult Create

ASP.NET MVC2中Controller向View传递数据的三种方式

在Asp.net mvc开发中,Controller需要向View提供Model,然后View将此 Model渲染成HTML.这篇文章介绍三种由Controller向View传递数据的方式,实现 一个DropDownList的显示. 第一种:ViewData ViewData是一个Dictionary.使用非常简单,看下面代码: 1 public ActionResult ViewDataWay(int id) 2 { 3 Book book =bookRepository.GetBook(id

比较LINQ to SQL Diagram 和Entity Data Model

LINQ to SQL Diagram(DBML)和Entity Data Model(EDMX)都是.Net Framework v3.5 引入的新特性.相信有很多人不清楚它们之间的差异,这里简要分析比较.下面以Northwind 范例数据库进行说明: LINQ to SQL 对象关系图(Object Relational Diagram) Entity Data Model (EDM) 实体数据模型

Asp.net MVC并不仅仅只是Linq to SQL

很多Asp.net的教程中的示例代码使用的数据访问方法是Linq to Sql或是Entity Framework.我在 www.asp.net的论坛上看到很多关于讨论是否有其他替代的数据库访问方式,回答是:当然有.这篇文章 就讲述了使用Ado.Net作为数据访问层来实现一个典型的增删查改程序. 由于是以练习作为目的,那我就不妨借用Spaanjaar's 的N层构架文章(Building Layered Web Applications with Microsoft ASP.NET 2.0.)的

在ASP.NET中显示Linq To SQL输出的SQL语句

最近在使用Linq To SQL的时候,为了了解不同Linq语句对性能造成的不同影响,需要获得Linq To SQL生成的SQL语句. 如果是在桌面程序中,只需要 _context.Log = Console.Out; 即可在控制台输出SQL语句.可是在ASP.NET中又该怎么办呢? 这时我想起了StringWriter.用它就可以代替Console.Out帮我们接收输出的日志,保存在一个StringBuilder里. 于是构造一个辅助类: using System; using System.

如何在ASP.NET项目里面正确使用Linq to Sql

非常抱歉,由于需要发表其他文章的缘故,我只能忍着不修正文中一小部分错误,以及增加一些有助免于误解的内容.这里特别说明一下,本文不是要讨论缓存机制的好坏,更不是要讨论如何缓存对象.而是说DAL/BLL上面对DataContext的处理.另外一个需要注意的地方,是修改了一个错误,原来大部分都写成IQueryable了,实际上应该是除了最后一个之外,都是IEnumerable.原因是什么需要大家想一下.此外,也需要大家注意的事,我所提出来的缓存,并不是直接利用Linq2Sql的代码来缓存,而是指是否便

Linq To Sql进阶系列(一)-从映射讲起

本系列,或多或少,直接或间接依赖入门系列知识.但,依然追求独立成章.因本文作者水平有限, 文中错误难免,敬请读者指出并谅解.本系列将会和入门并存. 案例 某君被邀为一超市设计数据库,用来存储数据.该君根据该超市中实际出现的对象,设计了 Customer, Employee,Order, Product等表,用来保存相应的客户,员工,订单,货品等.太好了,该 君很有oo的思想吗. 如果,你被要求用类及对象,来描述该关系型数据,你该如何做呢?在linq推出之前,ADO.NET被用 来做数据访问层.而