在linq-to-sql中使用metadatatype

时间:2010-03-16 15:12:11

标签: linq-to-sql

我问过这个问题 Adding more attributes to LINQ to SQL entity

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

“我添加了一个MetaDataType类,并为属性添加了可浏览属性,但似乎没有效果”

2 个答案:

答案 0 :(得分:2)

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

当您编写了自己的代码来检测BrowsableAttribute时,您可以更改它,因此它还会在类型上检测到MetadataTypeAttribute,如果存在,您可以转到引用的元数据类搜索用BrowsableAttribute修饰的属性。当你没有编写使用BrowsableAttribute的逻辑时(例如,这是.NET框架的一部分,因为它被Visual Studio设计者使用),没有办法让它工作。

目前,.NET框架中只有少数部分了解MetadataTypeAttribute。例如,MVC使用它进行验证,使用.NET 4.0 DataAnnotations(定义属性)也有验证器。 Enterprise Library 5.0(目前处于测试阶段)也将检测此属性以进行验证。

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

答案 1 :(得分:0)

我正在使用它,以便我可以允许我的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; } 
}

由于其他作者没有包含源代码,我想我会这样你会看到它的样子。