代码之家  ›  专栏  ›  技术社区  ›  annepic

中发生DbUpdateExceptionEntityFramework.dll

  •  0
  • annepic  · 技术社区  · 6 年前

    你有什么想法吗?

    这里是上下文-我有3个项目,我想通过代码优先的方法创建我的数据库。我大致遵循了官方文件中的步骤,但给出了我自己的例子:

    1. ConsoleApp1:创建为控制台应用程序;安装包EntityFramework
    2. SongDomain.类:创建为控制台应用程序;属性-输出类型:更改为类库;删除应用程序配置
    3. SongDomain.DataModel数据模型:创建为控制台应用程序;属性-输出类型:更改为类库;删除应用程序配置;添加SongContext.cs公司

    类.cs//在此定义模型;

    using System.Collections.Generic;
    
    
    namespace SongDomain.Classes
    {
    
        public class Song
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public bool Active { get; set; }
            public Album Album { get; set; }
            public int AlbumId { get; set; }
            public List<Genre> Genre { get; set; }
        }
        public class Album
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public List<Song> Songs { get; set; }
        }
    
        public class Genre
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Description { get; set; }
            public List<Song> Song { get; set; }
        }
    }
    

    现在,上下文类:

    using SongDomain.Classes;
    using System.Data.Entity;
    
    namespace SongDomain.DataModel
    {
        public class SongContext : DbContext
        {
            public DbSet<Song> Songs { get; set; } // Song is needed, so have to reference the Classes project
            public DbSet<Album> Albums { get; set; }
            public DbSet<Genre> Genres { get; set; }
        }
    }
    

    上下文来源于系统数据实体.DbContext并为模型中的每个类公开一个类型化的DbSet。

    using SongDomain.Classes;
    using SongDomain.DataModel;
    using System;
    using System.Linq;
    
    namespace ConsoleApp1
    {
        public class Program
        {
            static void Main(string[] args)
            {
                using (var db = new SongContext())
                {
                    // Create and save a new song
                    Console.Write("Enter new song: ");
                    var name = Console.ReadLine();
    
                    var s = new Song { Name = name };
                    db.Songs.Add(s);
                    db.SaveChanges();
    
                         
                    Console.WriteLine("Press any key to exit...");
                    Console.ReadKey();
                }
            }
        }
    }
    

    你怎么认为?乍一看,至少我做错什么了?我没有给它任何关于数据库的细节,因为我希望它能像文档中所说的那样通过代码生成(我知道在现实生活中,我不太可能不在设置文件中给出db配置)

    [键] [数据库生成(Dat)]abasegeneredoption.标识)]

    ... 同样的问题

    0 回复  |  直到 6 年前