【问题标题】:Linq to SQL mapping data without a DataContext没有 DataContext 的 Linq 到 SQL 映射数据
【发布时间】:2010-12-17 21:40:12
【问题描述】:

是否可以在没有 DataContext 实例的情况下访问 Linq to SQL 映射数据?

我问是因为我正在编写一些审计数据生成代码,这些代码只会触发某些实体和某些实体列。我想在访问任何 Linq DB 之前在静态构造函数中修复此元数据。

例如,从性能的角度来看,最好只发现一次实体的主键列,而不是为 ChangeSet 中的每个更改的实体触发以下代码:

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

调用前:

key.GetValue(entity, null),

【问题讨论】:

    标签: linq-to-sql audit


    【解决方案1】:

    是的,您不需要DataContext 的实例,只需要类型。

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

    这里我使用AttributeMappingSource,你可以使用XmlMappingSourceMappingSource的其他实现。

    【讨论】:

    • 好消息。由于我只是将表名拖到 Visual Studio Linq 模型窗口上,因此我假设只需要一个 AttributeMappingSource 映射源?
    • 是的,VS 设计器使用属性。
    猜你喜欢
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2011-11-12
    • 2011-05-10
    • 2023-03-14
    相关资源
    最近更新 更多