簡體   English   中英

從實體框架模型生成數據庫

[英]Generating database from entity framework model

我正計划制作一個包含多個模型的實體框架類,這些模型將創建數據庫表結構。

做了一些工作,並提出了這個模型結構:

public class Search
{
    public int SearchId { get; set; }
    public string SearchName { get; set; }
    public Times t { get; set; }
    public Media m { get; set; }

}


public class Times
{
    public int TimesId { get; set; }
    DateTime FromDate { get; set; }
    DateTime ToDate { get; set; }
    String Days { get; set; }
    List<HourSlice> TSlist;
}

public class HourSlice
{
    string Name { get; set; }
    string Slice { get; set; } // will contain both -from hour- and -to hour- slice

}



public class Media
{
    int MediaId { get; set; }
    List<OperatorType> ot;
    List<Operator> op;
    List<Program> p;
    List<Sector> s;
    List<Categorie> cat;
    List<MisradPirsum> mp;
}

public class OperatorType
{
    int OperatorTypeID { get; set; }
    string OperatorTypeName { get; set; }
}

public class Operator
{
    int OperatorID { get; set; }
    string OperatorName { get; set; }

}

public class Program
{
    int ProgramID { get; set; }
    string ProgramName { get; set; }
}

public class Sector
{
    int SectorID { get; set; }
    string SectorName { get; set; }
}

public class Categorie
{
    public int CategorieId { get; set; }
    List<Branch> br;
    List<SubBranch> sbr;
    List<SubSubBranch> ssbr;

}

public class Branch
{
    int BranchID { get; set; }
    string BranchName { get; set; }
}

public class SubBranch
{
    int SubBranchID { get; set; }
    string SubBranchName { get; set; }

}

public class SubSubBranch
{
    int SubSubBranchID { get; set; }
    string SubSubBranchName { get; set; }
}

public class MisradPirsum
{
    public int MisradPirsumId { get; set; }
    List<Company> c;
}

public class Company
{
    int CompanyID { get; set; }
    string CompanyName { get; set; }
}

Global.asax上的啟動器:

    public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        Database.DefaultConnectionFactory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["DBS"].ConnectionString);
        Database.SetInitializer<DBS>(new Search_Initializer());

        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);

     // Database.SetInitializer<PlayWithMVC4.Models.DBS>(new DropCreateDatabaseAlways<PlayWithMVC4.Models.DBS>());
        Database.SetInitializer<PlayWithMVC4.Models.DBS>(new DropCreateDatabaseIfModelChanges<PlayWithMVC4.Models.DBS>());

    }

如您所見,Search類是所有其他類的父類。 在其下的Times表將與Hourslice表相關。 Media表也位於Search類的下面,它下面有6個表,幾個有自己的子表,每個父表都有自己的ID。

主要目標是創建一個搜索數據庫,該數據庫將具有所有可能的數據結構以保存搜索並與原始數據庫進行交互以獲得每個搜索屬性/參數的實際數據。

我在使用此錯誤創建數據庫時遇到問題:“錯誤3004:從第30行開始的映射片段中的問題:在Set Searches中沒有為屬性Search.m指定映射。\\ r \\ n帶有鍵(PK)的實體將不會舍入-trip when:\\ r \\ n實體類型為[PlayWithMVC4.Models.Search] \\ r \\ n“}”

我確定結構/邏輯出了點問題,但是我不確定從哪里開始挖掘,非常感謝幫助。

首先,您要確保要映射的所有屬性都是公共屬性,並且它們實際上是屬性而不是字段。

例如,您的Media類型上的成員都是私有的,因為您尚未指定公共訪問修飾符。 集合成員也是字段,而不是屬性,因為它們沒有getter和setter。

另外,如果您希望支持代理類型以進行更改跟蹤或延遲加載,請在此處查看完整的要求列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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