C# 数据库已创建,未添加新表
我正在编写一个预创建的数据库,并且已经为表创建了DBSet定义。当前数据库从以前的系统继承而来,每个表包含100000多行数据(5年以上的事务)。我们正在把它放到一个新的应用程序中,在数据上进行移植 因此,数据库是手动创建的,而不是先编写代码。新类是先编写代码的,我们希望这些表能够自动生成到表中 我已经检查过了,用户对我们用于数据库连接的数据库具有db_owner访问权限。数据库也不是只读的 以下是已创建的上下文类:C# 数据库已创建,未添加新表,c#,sql-server,entity-framework,code-first,C#,Sql Server,Entity Framework,Code First,我正在编写一个预创建的数据库,并且已经为表创建了DBSet定义。当前数据库从以前的系统继承而来,每个表包含100000多行数据(5年以上的事务)。我们正在把它放到一个新的应用程序中,在数据上进行移植 因此,数据库是手动创建的,而不是先编写代码。新类是先编写代码的,我们希望这些表能够自动生成到表中 我已经检查过了,用户对我们用于数据库连接的数据库具有db_owner访问权限。数据库也不是只读的 以下是已创建的上下文类: using System; using System.Collections.
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using BHI.WCMS.DAL;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Migrations;
namespace BHI.WCMS.DAL.Partner
{
public class PartnerContext : DbContext
{
public PartnerContext()
: base("partner")
{
//Configuration.LazyLoadingEnabled = false;
Database.SetInitializer<PartnerContext>(new MigrateDatabaseToLatestVersion<PartnerContext, PartnerConfiguration>());
}
public PartnerContext(string ConnectionStringName)
: base(ConnectionStringName)
{
}
//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
// modelBuilder.Entity<PartnerProfileServiceCenterTransaction>().Property(p => p.AmountDue).HasPrecision(8, 2);
// base.OnModelCreating(modelBuilder);
//}
public DbSet<WarrantyForms> WarrantyForms { get; set; }
public DbSet<WarrantyFormLines> WarrantyFormLines { get; set; }
public DbSet<WarrantyFormLineParts> WarrantyFormLineParts { get; set; }
public DbSet<WarrantyFormLineReplacements> WarrantyFormLineReplacements { get; set; }
public DbSet<PartnerProfile> PartnerProfiles { get; set; }
public DbSet<PartnerProfileContactInfo> PartnerProfileContactInfos { get; set; }
public DbSet<PartnerProfileCustomerAddress> PartnerProfileCustomerAddresses { get; set; }
public DbSet<PartnerProfileServiceCenterTransaction> PartnerProfileServiceCenterTransactions { get; set; }
public static PartnerProfile InsertPartnerProfile(PartnerProfile profile)
{
using (var db = new PartnerContext())
{
foreach (var addy in profile.BillingAddress)
{
addy.DateCreated = DateTime.Now;
addy.DateModified = DateTime.Now;
db.PartnerProfileCustomerAddresses.Add(addy);
db.SaveChanges();
}
//profile.DateCreated = DateTime.Now;
//profile.DateModified = DateTime.Now;
//db.PartnerProfiles.Add(profile);
//db.SaveChanges();
}
return profile;
} // end of public static PartnerProfile InsertPartnerProfile(PartnerProfile profile)
public static PartnerProfile UpdatePartnerProfile(PartnerProfile profile)
{
using (var db = new PartnerContext())
{
}
return profile;
} // end of public static PartnerProfile UpdatePartnerProfile(PartnerProfile profile)
public static PartnerProfile SelectPartnerProfile(PartnerProfile profile)
{
using (var db = new BHI.WCMS.DAL.Partner.PartnerContext())
{
}
return profile;
} // end of public static PartnerProfile SelectPartnerProfile(PartnerProfile profile)
} // end of class WarrantyContext : DbContext
internal sealed class PartnerConfiguration : DbMigrationsConfiguration<PartnerContext>
{
public PartnerConfiguration()
{
AutomaticMigrationsEnabled = true;
}
}
} // end of namespace BHI.WCMS.DAL.Partner
在此方面的任何帮助都将不胜感激
谢谢
罗伯特好的,在和这里的一个家伙一起工作时,我们能够弄清楚发生了什么
public partial class WarrantyFormLineReplacements
{
#region Class Variables
public int in_WFLineReplacementID;
public int in_WFlineId;
public int in_WFId;
[MaxLength(120)]
public string vc_ModelNumber;
public decimal dc_ReplacementCost;
[MaxLength(255)]
public string vc_InsertBy;
public DateTime dt_InsertDate;
[MaxLength(255)]
public string vc_UpdateBy;
public DateTime dt_UpdateDate;
#endregion
} // end of public partial class WarrantyFormLineReplacements
public partial class WarrantyFormLineReplacements
{
#region Class Variables
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int in_WFLineReplacementID {get;set;}
public int in_WFlineId { get; set; }
public int in_WFId { get; set; }
[MaxLength(120)]
public string vc_ModelNumber { get; set; }
public decimal dc_ReplacementCost { get; set; }
[MaxLength(255)]
public string vc_InsertBy { get; set; }
public DateTime dt_InsertDate { get; set; }
[MaxLength(255)]
public string vc_UpdateBy { get; set; }
public DateTime dt_UpdateDate { get; set; }
#endregion
} // end of public partial class WarrantyFormLineReplacements
更正版本
public partial class WarrantyFormLineReplacements
{
#region Class Variables
public int in_WFLineReplacementID;
public int in_WFlineId;
public int in_WFId;
[MaxLength(120)]
public string vc_ModelNumber;
public decimal dc_ReplacementCost;
[MaxLength(255)]
public string vc_InsertBy;
public DateTime dt_InsertDate;
[MaxLength(255)]
public string vc_UpdateBy;
public DateTime dt_UpdateDate;
#endregion
} // end of public partial class WarrantyFormLineReplacements
public partial class WarrantyFormLineReplacements
{
#region Class Variables
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int in_WFLineReplacementID {get;set;}
public int in_WFlineId { get; set; }
public int in_WFId { get; set; }
[MaxLength(120)]
public string vc_ModelNumber { get; set; }
public decimal dc_ReplacementCost { get; set; }
[MaxLength(255)]
public string vc_InsertBy { get; set; }
public DateTime dt_InsertDate { get; set; }
[MaxLength(255)]
public string vc_UpdateBy { get; set; }
public DateTime dt_UpdateDate { get; set; }
#endregion
} // end of public partial class WarrantyFormLineReplacements
我造成的核心问题
核心问题是,我没有一个键(try-catch和logging-catch可以捕获),当我添加键时,我没有为每个变量({get;set;})定义访问器/变异器方法。一旦我添加了这些,它就在已经创建的数据库中创建了没有任何问题的表。正如我所期望的那样,它还创建了_umigrationhistory表