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

如何修复以下C# Entity Framework代码中的错误?

代码错误排查与修复方案

我来帮你梳理这段Phonebook代码里的问题,然后给出修复后的版本:

存在的问题

  • 多余的行号标记:代码里的14-、17-、20-、24-是编辑时残留的行号,属于无效语法,会直接导致编译失败。
  • DbSet类冲突:你手动定义了public class DbSet<T>,但EF框架已经在System.Data.Entity命名空间下提供了官方的DbSet<T>类型,这个不完整的自定义类不仅多余,还会引发命名冲突。
  • OnModelCreating的异常(可选调整):当前代码在OnModelCreating方法里抛出UnintentionalCodeFirstException,这通常是Database First模式下自动生成的代码,用来防止误触发Code First逻辑;但如果你是要使用Code First模式,这个异常需要移除并编写对应的模型配置代码。

修复后的完整代码

namespace Phonebook {
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class ContactsEntities : DbContext {
        public ContactsEntities()
            : base("name=ContactsEntities") { }

        protected override void OnModelCreating(DbModelBuilder modelBuilder) {
            throw new UnintentionalCodeFirstException();
            // 如果你是Code First模式,替换成你的模型配置代码,示例:
            // modelBuilder.Entity<Tbl_Contacts>().ToTable("Tbl_Contacts");
            // modelBuilder.Entity<Tbl_Contacts>().HasKey(c => c.ContactId);
        }

        public virtual DbSet<Tbl_Contacts> Tbl_Contacts { get; set; }
    }

    // 需确保Tbl_Contacts实体类已正确定义,示例模板:
    // public class Tbl_Contacts {
    //     public int ContactId { get; set; }
    //     public string FullName { get; set; }
    //     public string PhoneNumber { get; set; }
    //     // 根据数据库表结构添加其他属性
    // }
}

额外说明

  • 如果你是Database First模式,要确保已经通过EF设计器生成了完整的Tbl_Contacts实体类,并且配置文件里的ContactsEntities连接字符串指向正确的数据库。
  • 如果你要切换到Code First模式,删掉OnModelCreating里的异常语句,添加对应实体的配置逻辑,同时确保连接字符串对应的数据库可以被EF正常访问或创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:47:21