如何修复以下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
相关产品推荐
相关产品推荐

