2014-10-08 28 views
0

我在VS2013中遇到了EF6的一些問題。我不得不在Web應用程序項目中修改數據庫優先模型的連接字符串,所以我按照How should I edit an Entity Framework connection string?的最佳答案的建議進行了操作,並從我的Web.Config文件中將其刪除。 起初它似乎做工精細,我刪除了連接字符串,然後從實體設計我跑了「從數據庫更新模式」,重新創建連接字符串,但後來我的體型相似的多個錯誤失敗:從實體框架中刪除重複的Context.vb文件

Public Sub New() has multiple definitions with identical signatures 

經過一番挖掘,我發現當我重新創建連接字符串EF時,創建了名爲Model.Context1.vb的第二個Model.Context.vb文件,並且兩者仍然在某處引用。從那時起,我已經打開包含我的EF模型的文件夾中的每個文件,其中記事本搜索對Context.vb或Context1.vb的引用,並且已經空了,如果我刪除了任何一個文件,那麼我的構建失敗,說明找不到文件,所以作爲一種解決方法,我打開了Context.vb文件,並刪除了所有的代碼,所以沒有重複,我想通過刪除對文件的引用來刪除它,如果有人知道我可以如何去做。

回答

1

我已經整理出來了,在嘗試從源代碼控制中恢復舊版EF文件並仍然遇到相同問題後,我意識到該參考可能在項目文件中。

在[項目] .vbproj我發現這兩個條目:

<Compile Include="Data\schedulerModel.Context1.vb"> 
      <AutoGen>True</AutoGen> 
      <DesignTime>True</DesignTime> 
      <DependentUpon>schedulerModel.Context.tt</DependentUpon> 
     </Compile> 
    <Content Include="Data\schedulerModel.Context.tt"> 
      <Generator>TextTemplatingFileGenerator</Generator> 
      <DependentUpon>schedulerModel.edmx</DependentUpon> 
      <LastGenOutput>schedulerModel.Context1.vb</LastGenOutput> 
     </Content> 

我刪除了第一,並在第二個是context.vb文件扔下1,打開的項目,跑不會重建問題。

0

我有同樣的問題,但分辨率略有不同。無論出於何種原因,更新edmx文件一次似乎從項目文件中刪除了一條看起來很重要的行,行<LastGenOutput>MyEntityModel.Context.cs</LastGenOutput>

我重新添加了行到我的項目文件和更新模型沒有導致更多的重複上下文文件。整個街區看上去像下面的固定時:

<Content Include="MyEntityModel.Context.tt"> 
    <Generator>TextTemplatingFileGenerator</Generator> 
    <DependentUpon>MyEntityModel.edmx</DependentUpon 
    <LastGenOutput>MyEntityModel.Context.cs</LastGenOutput> 
</Content> 
0

想我要加我發現這個,因爲它已經讓我分心了幾個星期 - 我每次更新的數據庫,從我的模型的時候,我得到「重複」上下文,設計器文件等,然後數百個錯誤。然而,新的sp或表格或任何我添加的內容只出現在新的「context1」文件中,而不是原件,所以當我折回時,我不得不再次通過相同的過程等。

然後當我想到Source Control時,終於有一個燈亮了!我使用TFS,我發現除非所有與模型有關的文件在更新之前都被檢出,所以這是上下文,設計器和服務文件,然後EF生成幾乎所有的新版本,大概是因爲它不能修改其中的一個由於源代碼控制而只讀的文件。

然後,關鍵是修復項目文件,如上述答案中所述,然後再將所有內容簽出,然後執行更新。如果你沒有在proj文件中獲得該標籤,即使所有內容都被檢出,它也會再次出錯。

希望這會有所幫助 - 我的理智正在緩慢返回。

Ade