簡體   English   中英

EF6和POCO澄清

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM