为什么两个构造函数在使用Entity Framework的Code First逆向工程师功能时?

时间:2016-03-13 04:58:40

标签: constructor entity-framework-6

我正在学习实体框架并有一个问题。为什么在使用EF Code First和Reverse Engineering现有数据库时,我的上下文类中是否有两个构造函数?我相信下面的例子,第一个是确保我的数据库没有重新创建,因为我连接到现有的数据库,SixteenthSectionLegacy,第二个是识别我的app.config文件中使用的连接字符串...为什么不能&#39 ; t /不应该都在第一个构造函数中吗?

using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using EFReverseEngineerTest.Models.Mapping;

namespace EFReverseEngineerTest.Models
{
    public partial class SixteenthSectionLegacyContext : DbContext
    {
        static SixteenthSectionLegacyContext()
        {
            Database.SetInitializer<SixteenthSectionLegacyContext>(null);
        }

        public SixteenthSectionLegacyContext()
            : base("Name=SixteenthSectionLegacyContext")
        {
        }

        public DbSet<board> boards { get; set; }
        public DbSet<BOARD1> BOARDS1 { get; set; }
        public DbSet<Classification> Classifications { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new boardMap());
            modelBuilder.Configurations.Add(new BOARD1Map());
            modelBuilder.Configurations.Add(new ClassificationMap());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

: base("Name=SixteenthSectionLegacyContext")告诉EF默认情况下它应该使用哪些连接字符串。在代码中创建SixteenthSectionLegacyContext实例时,可以传递自己的连接字符串名称。

using (var context = new SixteenthSectionLegacyContext("SixteenthSectionLegacyContext_2"))
{
}

app.config

下的<connectionStrings> </connectionStrings>中添加第二个连接字符串名称

这就是为什么有2个,如果你没有传递任何东西,则使用默认的连接字符串。