有没有办法在DataContext/DBML文件中定义以下结构?是否可以在LINQ-to-SQL映射中使用泛型?
public class Entity
{
public int Id { get; set; }
public string Name { get; set; }
public EntitySet<IPermission> Permissions { get; set; }
}
public class User : IPermissionHolder
{
public int Id { get; set; }
public string Name { get; set; }
public EntitySet<Permission<User>> Permissions { get; set; }
}
public class Group : IPermissionHolder
{
public int Id { get; set; }
public string Name { get; set; }
public EntitySet<Permission<Group>> Permissions { get; set; }
}
public interface IPermissionHolder
{
int Id { get; set; }
}
public interface IPermission
{
Entity Entity { get; set; }
IPermissionHolder Holder { get; }
}
public class Permission<T> : IPermission where T : class, IPermissionHolder
{
public IPermissionHolder Holder
{
get { return PermissionHolder; }
}
public T PermissionHolder { get; set; }
public Entity Entity { get; set; }
}
如果这是不可能的,你能分割出适合我需要的另一种结构吗?
现在我的数据库为GroupPermissions和UserPermissions使用了两个不同的表。
我不喜欢有一个公共表,我必须添加一个“类型”列...有两个不同的表我有一个更严格的控制数据库端。
感谢所有帮助
PS:我还是用框架3.5,否则我可以删除IPermissionHolder界面,并使用协方差
PSS:问也在这里,但没有答案:( http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/04a03c68-79c0-4136-907c-f81440e78c45
编辑: 我想要不同的东西,我面临两个主要问题 1)我想有一个IEnumerable的,但它永远不会起作用,因为我不只是想获取数据,而且推动数据和一个对象不能同时协变和逆变。所以首先我应该选择:读或写。 2)这里最困难的问题是:我如何将两个关联映射到单个属性?
用户:
[global::System.Data.Linq.Mapping.AssociationAttribute(Name = "User_Permission", Storage = "permissions", ThisKey = "Id", OtherKey = "UserId")]
public EntitySet<Permission<User>> Permissions{ ... }
集团
[global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Group_Permission", Storage = "permissions", ThisKey = "Id", OtherKey = "GroupId")]
public EntitySet<Permission<Group>> Permissions { ... }
权限
[global::System.Data.Linq.Mapping.AssociationAttribute(Name = "???", Storage = "holder", ThisKey = "HolderId", OtherKey = "Id", IsForeignKey = true)]
public T PermissionHolder { ... }
也许我应该叫Asscoiation “Holder_Permission”?!?
您是否考虑过像数据访问一样使用数据库对象,并使用一些简单的CLR对象来管理这些更复杂的情况? – 2010-09-14 13:43:37
嗨,恩瑞克,你能更精确吗?我不明白你的意思。 – bonfo 2010-09-14 14:40:51