使EF 4.1代码首先运行项目

问题描述 投票:0回答:1

我正在使用EF 4.1 Code First构建一个简单的应用程序,但是我陷入了困境。这是我的应用程序域模型的ERD:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS92WWhYVC5wbmcifQ==” alt =“在此处输入图像描述”>

在Visual Studio 2010中,我有一个包含两个项目的解决方案。一个项目是容纳域模型,另一个项目是MVC3 Web应用程序来容纳应用程序逻辑。

在类库(项目1)中,我有以下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace QuotesDomain
{
    public class QuoteContext : DbContext
    {
        public DbSet<Quote> Quotes { get; set; }
        public DbSet<Author> Authors { get; set; }
        public DbSet<Language> Languages { get; set; }
        public DbSet<Tag> Tags { get; set; }
        public DbSet<QTBridge> QTBridge { get; set; }
    }

    public class Quote
    {
        public int Id { get; set; }
        [Required, MaxLength(500)]
        public string Body { get; set; }
        public int Likes { get; set; }
        [Required]
        public bool isApproved { get; set; }
        [Required]
        public DateTime CreatedOn { get; set; }
        [Required]
        public virtual Author Author { get; set; }
        [Required]
        public virtual Language Language { get; set; }
        public virtual ICollection<QTBridge> TagsBridge { get; set; }
    }

    public class Author
    {
        public int Id { get; set; }
        [Required, MaxLength(30), MinLength(2)]
        public string FirstName { get; set; }
        [Required, MaxLength(30), MinLength(2)]
        public string LastName { get; set; }
        [Required]
        public DateTime DOB { get; set; }
        public DateTime DOD { get; set; }
        [Required, MaxLength(60), MinLength(2)]
        public string Occupation { get; set; }
        [Required, MaxLength(170), MinLength(5)]
        public string WikiLink { get; set; }
        public byte[] Image { get; set; }
        [Required]
        public bool isApproved { get; set; }
        [Required]
        public DateTime CreatedOn { get; set; }
        public virtual ICollection<Quote> Quotes { get; set; }
    }

    public class Language
    {
        public int Id { get; set; }
        [Required, MaxLength(20), MinLength(2)]
        public string Name { get; set; }
        public byte[] Image { get; set; }
        [Required]
        public DateTime CreatedOn { get; set; }
        public virtual ICollection<Quote> Quotes { get; set; }
    }

    public class Tag
    {
        public int Id { get; set; }
        [Required, MaxLength(40), MinLength(2)]
        public string Name { get; set; }
        public byte[] Image { get; set; }
        [Required]
        public DateTime CreatedOn { get; set; }
        public virtual ICollection<QTBridge> QuotesBridge { get; set; }
    }

    public class QTBridge
    {
        public int Id { get; set; }
        public int QuoteId { get; set; }
        public int TagId { get; set; }
    }
}

我一直在看一些视频教程,上面的内容对我来说很好,但是当我尝试运行该应用程序时,出现以下错误:

“在此处输入图像描述”

基于ERD图的我的Code First类是否正确?我需要怎么做才能解决错误?

entity-framework-4.1 ef-code-first
1个回答
0
投票

这是实体和配置的代码的完整列表。

public class QuoteContext : DbContext
{
    public DbSet<Quote> Quotes { get; set; }
    public DbSet<Author> Authors { get; set; }
    public DbSet<Language> Languages { get; set; }
    public DbSet<Tag> Tags { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //This will create create a join table "QuoteTags"
        modelBuilder.Entity<Quote>().HasMany(q => q.Tags)
            .WithMany(t => t.Quotes);
    }
}

public class Quote
{
    public int Id { get; set; }

    [Required, MaxLength(500)]
    public string Body { get; set; }

    public int Likes { get; set; }

    [Required]
    public bool IsApproved { get; set; }

    [Required]
    public DateTime CreatedOn { get; set; }

    public int AuthorId { get; set; }

    [ForeignKey("AuthorId")]
    public virtual Author Author { get; set; }

    public int LanguageId { get; set; }

    [ForeignKey("LanguageId")]
    public virtual Language Language { get; set; }

    public virtual ICollection<Tag> Tags { get; set; }
}

public class Author
{
    public int Id { get; set; }

    [Required, MaxLength(30), MinLength(2)]
    public string FirstName { get; set; }

    [Required, MaxLength(30), MinLength(2)]
    public string LastName { get; set; }

    [Required]
    public DateTime DOB { get; set; }

    public DateTime DOD { get; set; }

    [Required, MaxLength(60), MinLength(2)]
    public string Occupation { get; set; }

    [Required, MaxLength(170), MinLength(5)]
    public string WikiLink { get; set; }

    public byte[] Image { get; set; }

    [Required]
    public bool IsApproved { get; set; }

    [Required]
    public DateTime CreatedOn { get; set; }

    public virtual ICollection<Quote> Quotes { get; set; }
}

public class Language
{
    public int Id { get; set; }

    [Required, MaxLength(20), MinLength(2)]
    public string Name { get; set; }

    public byte[] Image { get; set; }

    [Required]
    public DateTime CreatedOn { get; set; }

    public virtual ICollection<Quote> Quotes { get; set; }
}

public class Tag
{
    public int Id { get; set; }

    [Required, MaxLength(40), MinLength(2)]
    public string Name { get; set; }

    public byte[] Image { get; set; }

    [Required]
    public DateTime CreatedOn { get; set; }

    public virtual ICollection<Quote> Quotes{ get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.