C#API service EF 打印出DB查询语句

本文介绍了一种使用CodeFirst方法构建实体数据模型的方式,通过DbModelBuilder将CLR类映射到数据库表中。示例代码展示了如何创建数据库上下文(DataContext),并定义学生和教师实体之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



    /// <summary>

    ///  DbModelBuilder is used to map CLR classes to a database schema. 

    ///  This code centric approach to building an Entity Data Model (EDM) model is known as 'Code First'. 

    /// </summary>

    public partial class DataModel : DbContext, IDisposable

    {

        private static DbCompiledModel adminModel = CreateModel(admin: true);
        private static DbCompiledModel publicModel = CreateModel(admin: false);
        public DataModel()
            : base(publicModel)
        {
            //Output SQL 
            Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
        }

        public DataModel(string rpsdbConnectionString, bool admin = false)
            : base(rpsdbConnectionString, admin ? adminModel : publicModel)
        {
            //Output SQL 
            Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
        }

        public virtual IDbSet<Student> Students { get; set; }
        public virtual IDbSet<Teacher> Teachers { get; set; }

        private static DbCompiledModel CreateModel(bool admin)

        {
            DbModelBuilder modelBuilder = new DbModelBuilder();
 

            modelBuilder.Entity<Student>().ToTable("Student");

            modelBuilder.Entity<Teacher>().ToTable(admin ? "vwTeacher" : "Teacher"); 

            modelBuilder.Entity<Teacher>()
                .HasMany(e => e.Student)
                .WithOptional(e => e.Parent)
                .HasForeignKey(e => e.ParentCategoryID);

            return modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2008")).Compile();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值