【问题标题】:Saving data to database using Entity Framework使用实体框架将数据保存到数据库
【发布时间】:2018-05-06 17:17:00
【问题描述】:

我在 CurrentMovie 类中创建了方法 SaveRecord 用于将数据保存到托管在 Azure 上的数据库。

public class CurrentMovie
{
    public int ID { get; set; }
    public string title { get; set; }
    public Nullable<int> release { get; set; }
    public string image { get; set; }

    public void SaveRecord(int? ID, string title, Nullable<int> release, string image)
    {
            var context = new movie_generationsEntities();
            var movie_record = new movie_generations();

            ID = movie_record.movieID;
            title = movie_record.title;
            release = movie_record.release;
            image = movie_record.image;              

            context.movie_generations.Add(movie_record);
            context.SaveChanges();                                       
    }
}

然后我在controller中调用这个方法。

var movieDB = new CurrentMovie();
movieDB.SaveRecord(movieDB.ID, movieDB.title, movieDB.release, movieDB.image);

我确定数据保存在movieDB 属性中,因为我将它们保存到ViewBag 并成功显示它们。连接到数据库是成功的,因为它只是保存没有预期数据的空行。

是有什么问题还是我遗漏了什么?谢谢!

【问题讨论】:

    标签: c# asp.net-mvc entity-framework


    【解决方案1】:

    您创建一个新的 CurrentMovie 对象并在设置其属性之前将其保存,显然,它的所有属性都等于其类型的默认值。

    【讨论】:

    • 在我的示例中可能看起来像这样,但在我将数据保存到其属性之前,movieDB 对象已初始化。
    【解决方案2】:

    当您想要完全相反的情况时,您正在将新对象中的值分配给参数。此外,您的课程中不需要这些属性。

    您的代码应如下所示:

    public class CurrentMovie
    {
        public void SaveRecord(int? ID, string title, int? release, string image)
        {
            var context = new movie_generationsEntities();
            var movie_record = new movie_generations();
    
            movie_record.movieID = ID;
            movie_record.title = title;
            movie_record.release = release;
            movie_record.image = image;              
    
            context.movie_generations.Add(movie_record);
            context.SaveChanges();          
        }
    }
    

    【讨论】:

    • 从类中删除不需要的属性,您已经在函数参数中声明了这些属性然后尝试
    • 并共享您定义movie_generations的DBContext类
    • 命名空间 RandomMovieGenerator.DBModel { using System;使用 System.Data.Entity;使用 System.Data.Entity.Infrastructure;公共部分类movie_generationsEntities:DbContext {公共movie_generationsEntities():base(“name =movie_generationsEntities”){}受保护的覆盖无效OnModelCreating(DbModelBuilder modelBuilder){throw new UnintentionalCodeFirstException(); } 公共虚拟 DbSet movie_generations { 获取;放; } } }
    • 我没有错误,它只是在数据库中创建了空行。现在我做了一些调整,我得到 System.Data.Entity.Validation.DbEntityValidationException: 'Validation failed for a or more entity。有关更多详细信息,请参阅“EntityValidationErrors”属性。在这一行 context.SaveChanges();
    • Id 在数据库中可以为空吗?在这里你通过 nullable 可能是问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2016-08-11
    • 2013-01-06
    • 2011-01-18
    相关资源
    最近更新 更多