Asp.net mvc 3 结合使用UIHint和linqtosql生成的类

Asp.net mvc 3 结合使用UIHint和linqtosql生成的类,asp.net-mvc-3,linq-to-sql,c#-4.0,asp.net-4.0,Asp.net Mvc 3,Linq To Sql,C# 4.0,Asp.net 4.0,我使用LINQtoSQL生成一个dbml文件,其中包含我的数据库表的数据库模型。我想使用UIHint让MVC在编辑模式下以下拉列表或复选框的形式显示一些字段。但是如果我更改了文件,如果重新生成,它将丢失。我应该如何解决这个问题?我是MVC的新手,还在学习。我已经为所有CRUD元素设置了一个带有视图的控制器,但现在我正在微调,遇到了这个问题。如果要直接使用实体,应该创建一个分部类并在其中添加注释。这样,当重新生成模型时,您不会丢失注释。因为Linq to SQL自动生成分部类,所以您需要创建分部“

我使用LINQtoSQL生成一个dbml文件,其中包含我的数据库表的数据库模型。我想使用UIHint让MVC在编辑模式下以下拉列表或复选框的形式显示一些字段。但是如果我更改了文件,如果重新生成,它将丢失。我应该如何解决这个问题?我是MVC的新手,还在学习。我已经为所有CRUD元素设置了一个带有视图的控制器,但现在我正在微调,遇到了这个问题。

如果要直接使用实体,应该创建一个分部类并在其中添加注释。这样,当重新生成模型时,您不会丢失注释。

因为Linq to SQL自动生成分部类,所以您需要创建分部“伙伴类”,在其中添加数据注释。buddy类镜像自动生成的类中需要修改的部分。将它们与[MetadataType(typeof(BuddyClassName))]绑定在一起,在编译项目时,部分buddy类和自动生成的部分类将合并在一起

例如:

  • 您的命名空间是“Project.Models”
  • 您的Linq到Sql类称为“产品”

这些文章非常有用:


  • 如果我这样做了,我可以使用相同的对象名并合并这两个声明吗?非常感谢!由于障碍,我花了一些时间阅读你的文章,但今天,我用了你的例子,效果很好。我将阅读文章,为下拉控件创建自定义模板。我在几周前找到了创建它们的方法,所以我想我会再次找到它们。我没有名声,所以我不能给你投票。欢迎你。我发现这个网站在我自己的项目中非常有价值。
    using System.ComponentModel.DataAnnotations;
    
    namespace Project.Models
    {
      [MetadataType(typeof(ProductsMeta))]
      public partial class Products
      {
        // You can extend the products class here if desired.
    
        public class ProductsMeta
        {
          // This is a Linq-to-Sql Buddy Class      
          // In here you can add DataAnnotations to the auto-generated partial class
    
          [Key]
          public int ProductKey { get; set; }
    
          [Display (Name = "Product Name")]
          [Required(ErrorMessage = "Product Name Required")]
          [StringLength(255, ErrorMessage = "Must be under 255 characters")]
          public string ProductName { get; set; }
    
          [UIHint("MultilineText")]
          public string Description { get; set; }
        }
      }
    }