[英]EF6 and POCO Clarification
我試圖弄清楚如何使用EF6和POCO進行以下工作。
我有以下課程:
public class User {
public int Id { get; set; }
public virtual ICollection<UserLibrary> libraries{ get; set; }
}
public class UserLibrary {
public int Id { get; set; }
public DateTime CreationDate { get; set; }
public ICollection<AbstractLibrary> { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
public abstract class AbstractLibrary
{
public int Id { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public List<LibraryType> LibraryType{ get; set; }
public enum LibraryType{ }
}
public class LibraryB: AbstractLibrary
{
public int x { get; set; }
public new List<LibraryType> LibraryType{ get; set; }
public enum LibraryType
{
LibraryTypeAA,
LibraryTypeAB,
LibraryTypeAC
}
}
public class LibraryB: AbstractLibrary
{
public String y { get; set; }
public new List<LibraryType> LibraryType{ get; set; }
public enum LibraryType
{
LibraryTypeBA,
LibraryTypeBB,
LibraryTypeBC
}
}
我有許多擴展AbstractLibrary的具體類,每個類都有不同的LibraryType枚舉。
原因是一個用戶可以有很多UserLibrary,而一個UserLibrary可以有許多具體的LibraryA,LibraryB(每個都有不同的屬性,但是所有的LibraryType都有不同的枚舉)。
我的問題是:這如何轉換為EF中的表,我將如何繼續列出所有“ LibraryTypes”?
我希望我的問題很清楚。
這是Sql圖。
這是使用數據庫優先方法的代碼:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class Library
{
public Library()
{
this.LibraryExtensionAs = new HashSet<LibraryExtensionA>();
this.LibraryExtensionBs = new HashSet<LibraryExtensionB>();
this.UserLibraries = new HashSet<UserLibrary>();
}
public int Id { get; set; }
public string Description { get; set; }
public Nullable<decimal> Price { get; set; }
public Nullable<int> LinkId { get; set; }
public virtual LibraryTypeLink LibraryTypeLink { get; set; }
public virtual ICollection<LibraryExtensionA> LibraryExtensionAs { get; set; }
public virtual ICollection<LibraryExtensionB> LibraryExtensionBs { get; set; }
public virtual ICollection<UserLibrary> UserLibraries { get; set; }
}
}
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class LibraryExtensionA
{
public int Id { get; set; }
public Nullable<int> LibraryId { get; set; }
public Nullable<int> LinkId { get; set; }
public Nullable<int> x { get; set; }
public virtual Library Library { get; set; }
public virtual LibraryTypeLink LibraryTypeLink { get; set; }
}
}
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class LibraryExtensionB
{
public int Id { get; set; }
public Nullable<int> LibraryId { get; set; }
public Nullable<int> LinkId { get; set; }
public string y { get; set; }
public virtual Library Library { get; set; }
public virtual LibraryTypeLink LibraryTypeLink { get; set; }
}
}
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class LibraryType
{
public LibraryType()
{
this.LibraryTypeLinks = new HashSet<LibraryTypeLink>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<LibraryTypeLink> LibraryTypeLinks { get; set; }
}
}
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class LibraryTypeLink
{
public LibraryTypeLink()
{
this.Libraries = new HashSet<Library>();
this.LibraryExtensionAs = new HashSet<LibraryExtensionA>();
this.LibraryExtensionBs = new HashSet<LibraryExtensionB>();
}
public int Id { get; set; }
public Nullable<int> TypeId { get; set; }
public virtual ICollection<Library> Libraries { get; set; }
public virtual ICollection<LibraryExtensionA> LibraryExtensionAs { get; set; }
public virtual ICollection<LibraryExtensionB> LibraryExtensionBs { get; set; }
public virtual LibraryType LibraryType { get; set; }
}
}
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class User
{
public User()
{
this.UserLibraries = new HashSet<UserLibrary>();
}
public int Id { get; set; }
public virtual ICollection<UserLibrary> UserLibraries { get; set; }
}
}
namespace EF6
{
using System;
using System.Collections.Generic;
public partial class UserLibrary
{
public int Id { get; set; }
public Nullable<int> UserId { get; set; }
public Nullable<int> LibraryId { get; set; }
public virtual Library Library { get; set; }
public virtual User User { get; set; }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.