我在VS-2013工作。我已添加ADO.NET Entity Data Model
包含:
连接到我的数据库中的某些表,它生成了带有部分类的tt
文件,并在表的每个字段上添加注释,如下所示:
public partial class ms_item_cat
{
public ms_item_cat()
{
ms_items = new HashSet<ms_items>();
}
[Key]
public int pk_icat_id { get; set; }
[Required]
[StringLength(50)]
public string icat_name { get; set; }
[StringLength(50)]
public string icat_image_path { get; set; }
}
它没有显示我已添加到表中的某些扩展属性,例如描述等
脚本下面的是显示那些扩展属性:
select p.*, t.*
from sys.extended_properties p
inner join sys.tables t on p.major_id = t.object_id
where class = 1
答案 0 :(得分:1)
我设法通过这种方式从Db中检索我的扩展属性:
将下面列出的引用和名称空间添加到您的* .tt文件中(其中一些可能是多余的,但我需要所有这些文件)。我已在<#@ include file="EF6.Utility.CS.ttinclude"#>
和<#@ output extension=".cs"#>
&lt;#@ assembly name =&#34; $(ProjectDir)TiraggoEdmx \ TiraggoEdmx.EF.dll&#34; #&GT;
&lt;#@ assembly name =&#34; System.Configuration&#34; #&GT;
&lt;#@ import namespace =&#34; System.Data&#34; #&GT;
&lt;#@ import namespace =&#34; System&#34; #&GT;
&lt;#@ import namespace =&#34; System.Xml.Serialization&#34; #&GT;
&lt;#@ import namespace =&#34; TiraggoEdmx_v3&#34; #&GT;
&lt;#@ import namespace =&#34; System.Data.Entity&#34; #&GT;
&lt;#@ import namespace =&#34; System.Configuration&#34; #&GT;
&lt;#@ import namespace =&#34; System.Linq&#34; #&GT;
然后使用正确的连接字符串创建db上下文的实例(您可以在typeMapper
,ef
,code
等实例化的情况下在附近执行此操作。
var dbContext = new DbContext(yourConnectionString)
使用Tiraggo库创建edmx对象的实例。 (edmxLocation是edmx
文件的路径字符串)
Edmx edmx = Edmx.Load(edmxLocation);
将静态方法添加到* .tt文件的末尾
&LT;#+ public static string GetExtendedProperty(DbContext context,string schema,string tableName,string columnName,string propName) {
var query = context.Database.SqlQuery( string.Format(&#34; SELECT value FROM fn_listextendedproperty(NULL,&#39; schema&#39;,&#39; {0}&#39;,&#39; table&#39;,&#39; { 1}&#39;,&#39;列&#39;,&#39; {2}&#39;)其中objname =&#39; {2}&#39; AND name =&#39; { 3}&#39;&#34;,架构,tableName,columnName,propName));
return query.FirstOrDefault();
}#&GT;
因此,此方法将按名称从表的列中检索扩展属性。
在foreach
循环内创建一个info对象以获取具体实体的元数据
var entityInfo = new TiraggoEntityInfo(edmx,entity.FullName);
通过调用静态方法检索扩展属性值:
string extendedPropertyValue = GetExtendedProperty(dbContext,entityInfo.StorageInfo.Schema, entityInfo.StorageInfo.Name,edmProperty.Name,extendedPropName);
以下是我的完整template。我删除了一些代码,模板可能处于无法编译状态,但您可以看到代码的使用情况。
P.S。希望,这会有所帮助。抱歉格式不正确