Guids 不与列属性 EF 6 映射
Guids not mapping with Column Attribute EF 6
存储过程的结果未正确映射,仅适用于 GUID(SQL 中的唯一标识符)
menu.Sites = db.Database
.SqlQuery<Site>("get_application_sitemap @application_user_id, @application_name",
new SqlParameter("application_user_id",id),
new SqlParameter("application_name",applicationName)).ToList();
站点 class 如下所示
public class Site : EntityBase
{
public Guid ApplicationWebpageGuid
{
get { return application_webpage_guid; }
}
public Guid application_webpage_guid { get; set; }
public Guid? ParentApplicationWebpageGuid
{
get { return parent_application_webpage_guid ?? Guid.Empty; }
}
public Guid? parent_application_webpage_guid { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public int Children { get; set; }
}
主要问题是来自存储过程的列名是小写的并且下划线间隔。我 "mapping" 的方式和我松散地使用这个词不是我喜欢的。 Name、Url 和 Children 这三个属性映射良好。外壳似乎没有效果,但下划线间距给我带来了问题。有没有办法映射到存储过程?我无法在不引起严重头痛的情况下对存储过程进行任何更改。
在 entity framework 中,您可以使用 FluentAPI
映射列名称,如下所示:
modelBuilder.Entity<Site>()
.Property(t => t.ParentApplicationWebpageGuid)
.HasColumnName("parent_application_webpage_guid");
或者像这样的数据注释:
[Column(“parent_application_webpage_guid")]
public String ParentApplicationWebpageGuid {get;set;}
参考文献:
getting Entity Framework raw query to respect attributes
所以您 运行 遇到了 EF 实际上忽略了您放在列上的属性的问题。看起来他们并没有在 EF 7 中修复它,祝你好运。
存储过程的结果未正确映射,仅适用于 GUID(SQL 中的唯一标识符)
menu.Sites = db.Database
.SqlQuery<Site>("get_application_sitemap @application_user_id, @application_name",
new SqlParameter("application_user_id",id),
new SqlParameter("application_name",applicationName)).ToList();
站点 class 如下所示
public class Site : EntityBase
{
public Guid ApplicationWebpageGuid
{
get { return application_webpage_guid; }
}
public Guid application_webpage_guid { get; set; }
public Guid? ParentApplicationWebpageGuid
{
get { return parent_application_webpage_guid ?? Guid.Empty; }
}
public Guid? parent_application_webpage_guid { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public int Children { get; set; }
}
主要问题是来自存储过程的列名是小写的并且下划线间隔。我 "mapping" 的方式和我松散地使用这个词不是我喜欢的。 Name、Url 和 Children 这三个属性映射良好。外壳似乎没有效果,但下划线间距给我带来了问题。有没有办法映射到存储过程?我无法在不引起严重头痛的情况下对存储过程进行任何更改。
在 entity framework 中,您可以使用 FluentAPI
映射列名称,如下所示:
modelBuilder.Entity<Site>()
.Property(t => t.ParentApplicationWebpageGuid)
.HasColumnName("parent_application_webpage_guid");
或者像这样的数据注释:
[Column(“parent_application_webpage_guid")]
public String ParentApplicationWebpageGuid {get;set;}
参考文献:
getting Entity Framework raw query to respect attributes
所以您 运行 遇到了 EF 实际上忽略了您放在列上的属性的问题。看起来他们并没有在 EF 7 中修复它,祝你好运。