2016-06-11 30 views
0

獲取以下錯誤:數據庫遷移與EF6和.NET中獲取多個錯誤4.6.1

「驗證失敗的一個或多個實體參見‘EntityValidationErrors’屬性的更多詳細信息。」在Configuration.cs的89線

89號線是一個簡單的context.SaveChanges();,在類文件的末尾:

namespace Model.Migrations 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Migrations; 
    using System.Linq; 

    internal sealed class Configuration : DbMigrationsConfiguration<Model.ApplicationDbContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
     } 

     protected override void Seed(ApplicationDbContext context) 
     { 
      SeedData.AdditionalSeed _AdditionalSeed = new SeedData.AdditionalSeed(); 

      _AdditionalSeed.Seed_StateOrProvince(context); 
      _AdditionalSeed.Seed_CountryOrRegion(context); 
      _AdditionalSeed.Seed_ContactTypes(context); 
      _AdditionalSeed.Seed_CurrencyCodes(context); 

      _AdditionalSeed.Seed_Preferences_CalendarSettings_CalendarView(context); 
      _AdditionalSeed.Seed_Preferences_CalendarSettings_WeeklyView(context); 
      _AdditionalSeed.Seed_Preferences_CalendarSettings_WhatToShow(context); 
      _AdditionalSeed.Seed_Preferences_Calendar_FuturePastSettings(context); 
      _AdditionalSeed.Seed_Preferences_ItemsAndInventory_AdvancedInventory_Barcodes_CopyBarcodeFrom(context); 
      _AdditionalSeed.Seed_Preferences_ItemsAndInventory_UnitOfMeasureType(context); 
      _AdditionalSeed.Seed_Preferences_PayrollEmployees_EmployeeDefaults_PayFrequency(context); 
      _AdditionalSeed.Seed_Preferences_PayrollEmployees_EmployeeDefaults_SickAndVacationDefaults_AccuralPeriod(context); 
      _AdditionalSeed.Seed_Preferences_PayrollEmployees_EmployeeDefaults_Taxes_FilingStatus(context); 
      _AdditionalSeed.Seed_Preferences_ReportsAndGraphs_ReportPreferences_DatePreparedFormat(context); 
      _AdditionalSeed.Seed_Preferences_ReportsAndGraphs_ReportPreferences_PageNumberFormat(context); 
      _AdditionalSeed.Seed_Preferences_ReportsAndGraphs_ReportPreferences_PageLayout(context); 
      _AdditionalSeed.Seed_Preferences_SalesAndCustomers_InvoicePackingSlip(context); 
      _AdditionalSeed.Seed_Preferences_SalesAndCustomers_RoundingRules(context); 
      _AdditionalSeed.Seed_Preferences_SalesAndCustomers_Shippers(context); 
      _AdditionalSeed.Seed_Preferences_SalesTax_Intervals(context); 
      _AdditionalSeed.Seed_Preferences_SalesTax_SalesTaxCode(context); 
      _AdditionalSeed.Seed_Preferences_SendForms_SendMethod(context); 
      _AdditionalSeed.Seed_Preferences_SendForms_DeliveryMethod(context); 
      _AdditionalSeed.Seed_Preferences_SendForms_EmailTemplateCategoryList(context); 
      _AdditionalSeed.Seed_Preferences_TimeAndExpenses_WorkWeek(context); 

      _AdditionalSeed.Seed_Security_RoleMaster(context); 
      context.SaveChanges(); 
      _AdditionalSeed.Seed_Security_AccountingRole(context); 
      _AdditionalSeed.Seed_Security_BankingRole(context); 
      _AdditionalSeed.Seed_Security_CentersRole(context); 
      _AdditionalSeed.Seed_Security_CompanyRole(context); 
      _AdditionalSeed.Seed_Security_CustomerAndReceivablesRole(context); 
      _AdditionalSeed.Seed_Security_EmployeesAndPayrollRole(context); 
      _AdditionalSeed.Seed_Security_FileRole(context); 
      _AdditionalSeed.Seed_Security_ListsRole(context); 
      _AdditionalSeed.Seed_Security_ReportsRole(context); 
      _AdditionalSeed.Seed_Security_SiteSettingsRole(context); 
      _AdditionalSeed.Seed_Security_TimeTrackingRole(context); 
      _AdditionalSeed.Seed_Security_VendorsAndPayablesRole(context); 

      _AdditionalSeed.Seed_TaxesFilingStatus(context); 
      _AdditionalSeed.Seed_EmploymentType(context); 
      _AdditionalSeed.Seed_EmployeeEmergencyContactType(context); 
      _AdditionalSeed.Seed_EmployeeEthnicity(context); 
      _AdditionalSeed.Seed_EmployeeMaritalStatus(context); 
      _AdditionalSeed.Seed_Salutations(context); 

      _AdditionalSeed.Seed_DefaultUnitUsedForTypes(context); 
      _AdditionalSeed.Seed_UnitOfMeasureDefaultType(context); 
      context.SaveChanges(); 
      _AdditionalSeed.Seed_UnitOfMeasureDefaultBaseUnits(context); 
      context.SaveChanges(); 
      _AdditionalSeed.Seed_UnitOfMeasureDefaultRelatedUnits(context); 
      context.SaveChanges(); 

      _AdditionalSeed.Seed_Terms(context); 

      _AdditionalSeed.Seed_TaxForms(context); 
      context.SaveChanges(); 
      _AdditionalSeed.Seed_TaxFormDetail(context); 

      _AdditionalSeed.Seed_AccountTypes(context); 
      context.SaveChanges(); 

      _AdditionalSeed.Seed_Industries(context); 
      context.SaveChanges(); 

      _AdditionalSeed.Seed_OrganizationTypes(context); 
      context.SaveChanges(); 
     } 
    } 
} 

當我註釋此行了,然後我得到以下錯誤:

「序列包含多於一個元件」在TaxFormDetail.cs的線12

這個類文件中的代碼是1200線,所以我將只提供唯一的行:

namespace Model.Migrations.SeedData 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Migrations; 
    using System.Linq; 

    public partial class AdditionalSeed 
    { 
     public void Seed_TaxFormDetail(ApplicationDbContext context) 
     { 
      context.TaxFormDetail.AddOrUpdate(
       r => new { r.TaxFormID, r.TaxCodeLineDescription }, 
       new TaxFormDetailModel() { TaxCodeLineNumber = null, TaxCodeLineDescription = "Schedule F: Interest expense, mortgage", TaxFormID = context.TaxForms.FirstOrDefault(r => r.TaxForm.Equals("1040")).RecordID }, 
       ..... 
       new TaxFormDetailModel() { TaxCodeLineNumber = null, TaxCodeLineDescription = "Pt I-Unrel Bus Inc: Sch C, L3-Inc-real/pers prop", TaxFormID = context.TaxForms.FirstOrDefault(r => r.TaxForm.Equals("990-T")).RecordID } 
      ); 
     } 
    } 
} 

我給這臺模型如下:

[Table(name: "TaxFormDetail")] 
public class TaxFormDetailModel 
{ 
    [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid RecordID { get; set; } 

    public Guid TaxFormID { get; set; } 

    public string TaxCodeLineNumber { get; set; } 

    [MaxLength(255)] 
    public string TaxCodeLineDescription { get; set; } 
} 

我看過無數的谷歌和這些錯誤並沒有什麼SO結果幫助,除非我錯過了一些東西。

編輯

我唯一的錯誤是因爲這是由包管理器運行堆棧跟蹤,還有就是我知道的越來越別的東西沒有其他辦法:

System.InvalidOperationException: Sequence contains more than one element 
    at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source) 
    at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2[TResult](IEnumerable`1 sequence) 
    at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot) 
    at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) 
    at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) 
    at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source, Expression`1 predicate) 
    at System.Data.Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate[TEntity](DbSet`1 set, IEnumerable`1 identifyingProperties, InternalSet`1 internalSet, TEntity[] entities) 
    at System.Data.Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate[TEntity](IDbSet`1 set, Expression`1 identifierExpression, TEntity[] entities) 
    at Model.Migrations.SeedData.AdditionalSeed.Seed_TaxFormDetail(ApplicationDbContext context) in Z:\_Profile Storage\Projects\Corporate.WEB\Model\Migrations\SeedData\TaxFormDetail.cs:line 12 
    at Model.Migrations.Configuration.Seed(ApplicationDbContext context) in Z:\_Profile Storage\Projects\Corporate.WEB\Model\Migrations\Configuration.cs:line 81 
    at System.Data.Entity.Migrations.DbMigrationsConfiguration`1.OnSeed(DbContext context) 
    at System.Data.Entity.Migrations.DbMigrator.SeedDatabase() 
    at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.SeedDatabase() 
    at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) 
    at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) 
    at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b() 
    at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) 
    at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run() 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force) 
    at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
Sequence contains more than one element 
+0

什麼是內部異常? http://www.c-sharpcorner.com/UploadFile/97fc7a/validation-failed-for-one-or-more-entities-mvcentity-frame/ –

回答

0

我找出了這種情況的解決方法。

對於「一個或多個實體的驗證失敗。有關更多詳細信息,請參閱」EntityValidationErrors「屬性。在Configuration.cs錯誤的第89行,我更改了種子方法以檢查該特定表(稅碼)的現有數據,如果該表爲空,則添加記錄NOT添加或更新。

至於「序列包含多個元素」在TaxFormDetail.cs去的第12行,我基本上做了同樣的事情。

現在,每次我執行Update-Database PM命令時,我都不會再收到任何錯誤。