簡體   English   中英

從數據庫更新EF模型導致現有項目正常運行的多重性錯誤

[英]Update EF model from database is causing Multiplicity errors on an existing project working perfectly

我繼承了一個項目(ASP.NET Web窗體)以進行更新/升級。 運行調試時,該項目在VS 2013中工作正常,但是當我向SQL DB添加表並且“從數據庫更新模型” EF(4.0)返回以下錯誤時:

錯誤34錯誤113:多重性在關系'FK_FinanceInvoice_Events'中的角色'Event'中無效。 因為從屬角色中的所有屬性都是可為空的,所以主體角色的多重性必須為“ 0..1”。

直到我修復這些錯誤后,它才會將表格添加到我的模型中,但是如果我更改了“多重性”設置(如某些帖子所建議的那樣),則會出現其他多個錯誤。

事實是,在我嘗試對其進行更新之前,該系統和EF模型都可以正常運行。

我也嘗試過先創建模型,然后創建“ Generate DB”,但這會刪除整個DB,但是由於其中包含大量數據,所以我無法這樣做。

我注意到的一件事是Model.edmx沒有.tt和context.tt文件(我想發布我的解決方案資源管理器的圖片,但是我沒有足夠的信譽點)。 為什么我的模型中缺少這兩個文件?

第二個問題是我需要更新的數據庫正在生產中,並且充滿了現有數據。

如果有人能指出我正確的方向,我將不勝感激。 謝謝!

編輯:吉姆·伍利(Jim Wooley)提出,我們的DataModel可能是在T4之前創建的,我對此並不了解。 這是附加到.edmx的designer.cs文件的內容。 希望有人可以告訴我它是如何創建的以及如何更新/修改數據庫和模型

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.Data.EntityClient;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.Runtime.Serialization;
using System.Xml.Serialization;

[assembly: EdmSchemaAttribute()]
#region EDM Relationship Metadata

[assembly: EdmRelationshipAttribute("EMSDataModel", "FK_ActivityLogs_Log", "UserLog", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(EMS.Data.UserLog), "ActivityLog", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(EMS.Data.ActivityLog), true)]

//The rest i removed for brevity

namespace EMS.Data
{
    #region Contexts

    /// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    public partial class EMSDataModelContainer : ObjectContext

    //The rest i removed for brevity

    #region Entities

/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="EMSDataModel", Name="AccommodationDetail")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AccommodationDetail : EntityObject

    //The rest i removed for brevity

    #region ComplexTypes

/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmComplexTypeAttribute(NamespaceName="EMSDataModel", Name="CheckCityExists_Result")]
[DataContractAttribute(IsReference=true)]
[Serializable()]
public partial class CheckCityExists_Result : ComplexObject
    //The rest i removed for brevity

}

我希望有人可以將我重定向到對生產數據庫以及模型進行更改。

編輯:我正在使用Visual Studio 2013和這篇文章對我不起作用如何與Visual Studio 2013一起使用實體框架4

使用VS 2010解決了所有這些問題。我在VS 2010中導入了項目,從數據庫更新了模型,成功導入了新表。 沒有錯誤被創建,我們都很高興。 太糟糕了,我無法使用花了很多錢來從事此項目的新VS 2013 Pro。 我希望新的VS版本可以檢測到舊項目並適應或至少提醒用戶潛在的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM