我真的很感謝任何人都可以提供的見解。EF6.1升級問題:SQL Server CE文件位置和[NotMapped]屬性
我回到了一個使用EF6.0 RC預覽的項目。在將項目EF更新到6.1並更新SQL Server CE之後,我有兩個問題。
[UPDATE] 問題1 & 2解決問題3是不。
問題3 - 現在與路徑通過連接字符串中設置如上所述,通過遷移包管理器叫做不工作作爲一個無效的路徑。任何想法的人?
當我啓動調試過程時,出現問題1和異常崩潰;但它確實創造.sdf
文件雖然在錯誤的位置,如問題解釋2
1.沒有映射BY LINQ錯誤
財產和不支持在最初的創作過程中,我得到一個異常
List<Equipment> duplicateTags = db.EquipmentReg
.GroupBy(e => e.TagAndLocation)
.Where(g => g.Count() > 1)
.SelectMany(g => g).ToList<Equipment>();
例外與TagAndLocation
有關。 TagAndLocation
在模型中通過
/// <summary>
/// Creates concatenation object that will not be mapped in the database but will be in the
/// Object Relational Mapping (ORM) of the EF model.
/// </summary>
[NotMapped]
public string TagAndLocation { get { return Tag + " (" + Location.Name + ")"; } }
「System.NotSupportedException」類型的第一次機會異常發生在EntityFramework.dll定義
其他信息:指定的類型成員「TagAndLocation」是 在LINQ不支持到實體。只支持初始值設定項,實體成員, 和實體導航屬性。
爲什麼現在發生這種情況?
2.連接字符串不適用LOCATION
我的連接沒有應用路徑正確了。
我有它自動運行的DbConfiguration
類,我猜是由於它的繼承類類型。如圖所示相反在運行位置...\bin\Debug\Databases\Hazardous_Area_Database_Job.sdf
創建文件下面
class HAIDbJob_EFConfiguration : DbConfiguration
{
public HAIDbJob_EFConfiguration()
{
SetProviderServices(SqlCeProviderServices.ProviderInvariantName, SqlCeProviderServices.Instance);
// Create the connection string programmatically - Setting the filename and path.
SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlCeConnectionFactory(
"System.Data.SqlServerCe.4.0",
System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Databases"),
@"Data Source=" + System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Databases") +
@"\Hazardous_Area_Database_Job.sdf"));
}
}
,它在 ..\bin\Debug\HA_Inspector.HAI_Database.HAI_Job_EF_Model.Hazardous_Area_Database_Job.sdf
也就是數據庫模型的完整的命名空間創建它......我試圖找到幾個解決方案對於其他人的性質略有不同的問題,但沒有一個能起作用。任何想法都將非常感激。
謝謝埃裏克,你把我放在正確的道路上。 – Asvaldr 2015-02-08 23:58:48
有沒有什麼辦法可以在運行時以編程方式更改數據庫名稱和文件路徑? – Asvaldr 2015-02-09 00:04:23
當然 - http://erikej.blogspot.dk/2013/10/sql-server-compact-4-desktop-app-with.html(最後部分) – ErikEJ 2015-02-09 07:31:26