You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Entity Framework将数据保存至Azure数据库的技术实现咨询

嘿,我看到你已经在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.... // 这里代码看起来没写完
    }
}

从现有代码来看,有几个关键问题需要调整,不然没法正常完成数据保存:

  • 赋值逻辑搞反了:你现在是把实体movie_record的属性值赋给方法参数,这完全颠倒了——应该把方法接收的参数值赋值给movie_record的对应属性,比如movie_record.movieID = ID;(如果movieID是数据库自增主键,其实不用手动赋值,数据库会自动生成)
  • 参数与类属性重名:方法里的ID、title等参数和类本身的属性同名,容易造成混淆,要么给参数加前缀(比如newId、newTitle),要么用this关键字明确指向类的属性
  • 缺少数据库提交操作:光创建实体、赋值还不够,需要先把实体添加到上下文,再调用SaveChanges()才能把数据真正同步到Azure数据库
  • 上下文资源未释放:数据库上下文需要及时释放,建议用using语句包裹,避免资源泄漏

给你一个修正后的示例代码参考:

public class CurrentMovie {
    // 建议属性名用帕斯卡命名法,符合C#编码规范
    public int ID { get; set; }
    public string Title { get; set; }
    public int? ReleaseYear { get; set; }
    public string ImageUrl { get; set; }

    public void SaveRecord(int? movieId, string title, int? releaseYear, string imageUrl) {
        // using语句会自动释放上下文资源
        using (var context = new movie_generationsEntities()) {
            var movieRecord = new movie_generations();
            
            // 非自增主键才需要手动赋值
            if (movieId.HasValue) {
                movieRecord.movieID = movieId.Value;
            }
            movieRecord.title = title;
            movieRecord.release = releaseYear;
            movieRecord.image = imageUrl;

            // 将实体添加到上下文
            context.movie_generations.Add(movieRecord);
            // 提交更改到数据库
            context.SaveChanges();
        }
    }
}

额外提一句:如果CurrentMovie本身就是对应数据库表的实体类,其实可以不用单独写SaveRecord方法,直接通过上下文操作它即可;如果是DTO(数据传输对象)类,那现在的写法就很合适。

内容的提问来源于stack exchange,提问作者pycan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:39:21