Linq EF6.1升级问题:到SQL Server CE文件位置和[NotMapped]属性

Linq EF6.1升级问题:到SQL Server CE文件位置和[NotMapped]属性,linq,entity-framework,sql-server-ce,Linq,Entity Framework,Sql Server Ce,我真的很感激任何人能提供的见解 我回到了一个使用EF6.0 rc预览版的项目。在将项目EF更新为6.1和更新SQLServerCE之后,我遇到了两个问题 [更新] 问题1和2已解决问题3未解决 问题3- 现在,如上所述,通过连接字符串设置路径,通过包管理器调用的迁移不会作为无效路径工作。有什么想法吗 启动调试过程时,出现问题1,异常崩溃;但它确实创建了一个.sdf文件,尽管它位于问题2中解释的错误位置 一,。未映射属性,LINQ错误不支持该属性 在初始创建过程中,我得到一个异常 List<

我真的很感激任何人能提供的见解

我回到了一个使用EF6.0 rc预览版的项目。在将项目EF更新为6.1和更新SQLServerCE之后,我遇到了两个问题

[更新] 问题1和2已解决问题3未解决

问题3- 现在,如上所述,通过连接字符串设置路径,通过包管理器调用的迁移不会作为无效路径工作。有什么想法吗

启动调试过程时,出现问题1,异常崩溃;但它确实创建了一个.sdf文件,尽管它位于问题2中解释的错误位置

一,。未映射属性,LINQ错误不支持该属性

在初始创建过程中,我得到一个异常

List<Equipment> duplicateTags = db.EquipmentReg
                .GroupBy(e => e.TagAndLocation)
                .Where(g => g.Count() > 1)
                .SelectMany(g => g).ToList<Equipment>();
EntityFramework.dll中首次出现类型为“System.NotSupportedException”的异常 其他信息:指定的类型成员“TagAndLocation”为 LINQ to实体中不支持。仅限初始值设定人、实体成员、, 并支持实体导航属性

为什么现在会这样

二,。连接字符串未应用于位置

我的连接不再正确应用路径

我想这是由一个自动运行的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\u Area\u Database\u Job.sdf中创建文件,而是在 ..\bin\Debug\HA_Inspector.HAI_Database.HAI_Job_EF_Model.Hazardous_Area_Database_Job.sdf


这是数据库模型的完整命名空间。。。我曾尝试过一些为其他人找到的解决方案——性质稍有不同的问题,但都不管用。任何想法都将不胜感激。

1:EF提供商试图将TagAndLocation转换为SQL,但失败了。必须为此分组使用LINQ to对象

2:为什么不在app.config中有一个命名的connectionstring,或者在DbContext构造函数中传递它。

解决方案1 我在GROUPBY语句中进行了字符串比较,因为location有一个字符串成员location.Name

解决方案2 当我最初写这篇文章时,我一直想动态命名数据库,这就是为什么我要写initialiser类。
为了解决这个问题,我只是按照Erik的建议,使用Source=./Databases在app.config中放置了一个XAML连接字符串。。。。。获取子文件夹。

是否有任何方法可以在运行时以编程方式更改数据库名称和文件路径?当然-最后几节**问题3-**现在,通过连接字符串设置的路径如上所述,通过包管理器调用的迁移不会作为无效路径工作。有什么想法吗?
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"));
    }
}