我真的很感激任何人都能提供的见解。
我回到了使用EF6.0 rc预览的项目。在将项目EF更新到6.1并更新SQL Server CE后,我遇到了两个问题。
[UPDATE] 问题1& 2解决问题3不是。
问题3 - 现在通过连接字符串设置路径,如上所述,通过包管理器调用的迁移不能作为无效路径。任何人的想法?
当我启动调试过程时,我遇到问题1并且异常崩溃;但它确实会创建一个.sdf
文件,尽管位置错误,如问题2中所述。
1。没有映射的属性和LINQ ERROR不支持
在初始创建过程中,我得到一个异常
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 + ")"; } }
类型&#39; System.NotSupportedException&#39;的第一次机会异常。发生在EntityFramework.dll中 附加信息:指定的类型成员&#39; TagAndLocation&#39;是 LINQ to Entities不支持。只有初始化者,实体成员, 支持实体导航属性。
为什么现在发生这种情况?
2。连接线不适用位置
我的连接不再正确应用路径。
我让它由一个自动运行的DbConfiguration
类完成,我想由于它继承了类类型。如下图所示
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\Databases\Hazardous_Area_Database_Job.sdf
中创建文件,而是在其中创建文件
..\bin\Debug\HA_Inspector.HAI_Database.HAI_Job_EF_Model.Hazardous_Area_Database_Job.sdf
这是数据库模型的完整命名空间...我已经尝试了一些解决方案,为其他人提供了性质略有不同的问题,但没有一个有效。任何想法都会非常感激。
答案 0 :(得分:0)
1:EF提供程序尝试将TagAndLocation转换为SQL并失败。您必须使用LINQ to Objects进行此分组。
2:为什么不在app.config中有一个命名的连接字符串,或者在DbContext构造函数中传递它。
答案 1 :(得分:0)
解决方案1 我在group by语句中进行了字符串比较,因为location有一个字符串成员Location.Name。
解决方案2 当我最初写这篇文章时,我想一直动态命名数据库,这就是我编写初始化类的原因。 为了解决这个问题,我只是按照Erik的建议,在app.config中输入一个XAML连接字符串,使用&#34; Source =。/ Databases&#34; .....来获取子文件夹。