有沒有辦法在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