为我的模型生成强类型的索引视图时,我总是得到以下结果:
<%= Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %>
我正在使用POCO类与我们的ORM一起使用。据我所知,在使用LINQ to SQL时,视图代码将知道哪个字段是主键。
是否有一种方法可以使属性(或类)的属性能够让View Generator知道ID属性是否为主键?
答案 0 :(得分:3)
您可以直接使用KeyAttribute,也可以使用好友类或关联的元数据提供商。
答案 1 :(得分:1)
如果我理解正确
[Column(IsPrimaryKey=true)]
应该有用。
建议基于功能
public static List<string> GetEntityKeyProperties(Type type)
{
List<string> keyProperties = new List<string>();
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo pi in properties)
{
System.Object[] attributes = pi.GetCustomAttributes(true);
foreach (object attribute in attributes)
{
if (attribute is EdmScalarPropertyAttribute)
{
if ((attribute as EdmScalarPropertyAttribute).EntityKeyProperty == true)
{
keyProperties.Add(pi.Name);
}
} else if(attribute is ColumnAttribute) {
if ((attribute as ColumnAttribute).IsPrimaryKey == true)
{
keyProperties.Add(pi.Name);
}
}
}
}
return keyProperties;
}
放在MVC 1中的List.tt模板中。