Linq to sql 在linq to sql中使用metadatatype

Linq to sql 在linq to sql中使用metadatatype,linq-to-sql,Linq To Sql,我问过这个问题 现在,当我在designer中将Browsable属性添加到生成的实体中时,它可以工作。但是,当我使用MetaDataType方法并在分部类中添加Browsable属性时,它不起作用 “我添加了一个MetaDataType类,并将BrowsableAttribute添加到属性,但似乎没有效果”添加MetadataTypeAttribute仅在您编写了检测BrowsableAttribute的自定义代码时才有用。NET framework处理元数据类型属性的方式与处理任何其他属性

我问过这个问题

现在,当我在designer中将Browsable属性添加到生成的实体中时,它可以工作。但是,当我使用MetaDataType方法并在分部类中添加Browsable属性时,它不起作用


“我添加了一个MetaDataType类,并将BrowsableAttribute添加到属性,但似乎没有效果”

添加
MetadataTypeAttribute
仅在您编写了检测
BrowsableAttribute
的自定义代码时才有用。NET framework处理元数据类型属性的方式与处理任何其他属性的方式没有任何区别,也不会将您的类型与元数据类型“合并”

当您编写了自己的代码来检测
BrowsableAttribute
时,您可以对其进行更改,这样它也可以检测类型上的
MetadataTypeAttribute
,如果它存在,您可以转到引用的元数据类来搜索用
BrowsableAttribute
修饰的属性。如果您尚未编写使用
BrowsableAttribute
的逻辑(例如,这是.NET framework的一部分,因为它由Visual Studio设计器使用),则无法使其正常工作

目前,.NET framework中只有少数部分了解
MetadataTypeAttribute
。例如,MVC使用它进行验证,而.NET4.0DataAnnotations(定义属性)也有一个验证器。Enterprise Library 5.0(目前处于beta版)也将检测此属性以进行验证


虽然越来越多的应用程序和框架的一部分可能能够处理此属性,但在大多数情况下使用它是无用的。

我使用它是为了让我的Linq to SQL类也具有Json属性,以简化Json对象的反序列化:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.ComponentModel.DataAnnotations; 

[MetadataType(typeof(User_JsonProperties))] 
public partial class User 
{} 

public class User_JsonProperties

{ 
   [JsonProperty("user_id")] 
   public int UserId { get; set; } 
}
因为另一位作者没有包含源代码,所以我想我会这样做,以便您看到它的样子