2009-11-18 72 views
2

是否可以在沒有DataContext實例的情況下訪問Linq to SQL映射數據?Linq to SQL映射數據,但沒有DataContext

我問,因爲我正在寫一些審計數據生成代碼,只會觸發一些實體和一些實體列。我想在任何Linq DB訪問之前在靜態構造函數中修復此元數據。

例如從性能角度將優選以發現一個實體的主鍵列僅僅一次,而不是觸發下面的代碼對於每個改變的實體中的變更:

var metaTable = context.Mapping.GetTable(entityType); 
var key = (PropertyInfo)metaTable.RowType.DataMembers.Single(
        md => md.IsPrimaryKey).Member; 

之前要調用:

key.GetValue(entity, null), 

回答

2

是的,你不需要DataContext的實例,只有類型。

MappingSource mappingSource = new AttributeMappingSource(); 
MetaModel mapping = mappingSource.GetModel(typeof(MyDataContext)); 

這裏我使用AttributeMappingSource,你可以使用XmlMappingSourceMappingSource其他實現。

+0

好消息。由於我只是將表名拖到Visual Studio Linq模型窗口上,我假設我需要一個AttributeMappingSource映射源? – camelCase 2009-11-18 14:56:34

+0

是的,VS設計師使用屬性。 – 2009-11-18 19:14:35