2013-01-16 87 views
0

這是我第一次在VS2012中使用EF,因爲我至今一直在使用2010。我添加了實體框架模型,並添加了兩個擴展名爲.tt的文件,我相信這在VS2010中不存在。在其中一種情況下,它會生成部分類以匹配實體。不過,我已經在我的應用程序根目錄下的另一個名爲Entites的手動創建的文件夾中有這些部分類。這會導致構建問題,因爲他們衝突...自動生成部分類

我該如何阻止他們autogenerating或如何使他們與我手動創建的部分類很好?令人難以置信的是,VS2012不會問,因爲它會破壞我的代碼!汽車的

例生成的類手動創建的類

namespace StatisticsServer 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class Statistic 
    { 
     public int StatID { get; set; } 
     public int CategoryID { get; set; } 
     public int FranchiseID { get; set; } 
     public double StatValue { get; set; } 
    } 
} 

namespace StatisticsServer.Entities 
{ 
    public partial class Statistic 
    { 
     public static List<Statistic> GetStatisticsSet(int categoryID) 
     { 
      List<Statistic> statSet = new List<Statistic>(); 
      using (var context = new StatisticsTestEntities()) 
      { 
       statSet = (from s in context.Statistics where s.CategoryID == categoryID select s).ToList(); 
      } 
      return statSet; 
     } 
    } 
} 
+0

你可以舉一個自動生成的類和你手動創建的類之一的例子嗎?部分類應該一起工作,但您可能已經創建了重複的屬性/方法。 –

+0

更新了帶有示例的問題 – coolblue2000

+0

衝突在哪裏? –

回答

1

確保您手動創建的類都在相同的命名空間自動生成的。

否則,這兩個類將被視爲單獨的部分類,如果您在同一個調用類中使用兩個名稱空間,則無法確定您的意思。

因此,例如,你的情況,你可能有:

using StatisticsServer; 
using StatisticsServer.Entities; 

然後,當您在聲明該類因爲Statistic類在兩個命名空間中存在的構建就會失敗類型Statistic的對象。

+1

在VS2010中,我通過將「Custom Tool Namespace」屬性設置爲手動創建的部分類的名稱空間來處理該問題。一切都很好。我已經在我的2012項目中完成了這項工作,如果我從自動生成的文件中刪除代碼,一切正常。但是很顯然,只要我更新模型並重新打破,它們就會重新創建。我甚至不想要那些自動生成的類。他們不在2010年,所以他們創造了什麼?另外,爲什麼它們是在與CustomTool Namespace屬性中指定的名稱空間不同的名稱空間中創建的? – coolblue2000

+0

您是否使用不同版本的實體框架? (即VS2010中的EF4,VS2012中的EF5) –

+0

我假設我正在使用EF5,因爲它是在VS2012中從頭創建的項目。在2010年,它是EF4 – coolblue2000