标签: entity-framework-6

实体框架 6 数据库优先方法不从 SQL Server 创建所有表

当我在 ASP.NET MVC 5 项目中使用“数据库优先”方法创建模型时,并非所有来自 SQL Server 的表都在我的项目中创建。

我已一步步遵循本文中的所有内容: https://www.asp.net/mvc/overview/getting-started/database-first-development/creating-the-web-application

ASP.NET MVC 项目模型:

在此输入图像描述

SQL Server 数据库:

在此输入图像描述

我的 SQL Server 数据库中有三个表尚未在模型中创建。该表是AspNetUserRoles、ContactsAddresses 和 IssuesItems

以下是三个缺失表的设计:

AspNet用户角色:

在此输入图像描述

联系地址:

在此输入图像描述

问题项目:

在此输入图像描述

所有三个缺失的表都是在 SQL Server 中创建的,以消除多对多关系,并且它们都有两个连接两个表的主键。

为什么会发生这种情况以及我可以采取什么措施来解决它?

谢谢。

sql-server asp.net-mvc entity-framework entity-framework-6 asp.net-mvc-5

2
推荐指数
1
解决办法
2522
查看次数

Visual Studio 2015 中的向导中缺少 PostgreSQL 数据提供程序

我花了一天时间尝试将 Entity Framework 6 SQL Server CE 迁移到 PostgreSQL。

我已经很好地复制了数据库,但我似乎无法让数据提供程序正常工作。

首先,我尝试了旧版 2.2.7 版本的 EF 提供程序,它不需要 .NET 4.5(因为我们的项目无法使用它),但这不起作用。我一直在使用NpgsqlConnection而不是SqlConnectionStringBuilder更改 app.config 以具有连接字符串Host(我尝试过,Server但它不喜欢它)和Database值,并确保 EF 部分如下:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
        <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)

我现在忽略了这个限制,只是为了尝试让它工作,所以我有 EF 提供程序的 EF6 v3.1.1 版本和最新的 .NET 提供程序 (v3.2.2),但它们也不起作用。

为了修复它,我还尝试通过安装 VS2015 扩展将 EDMX 从 SQL Server CE 重新同步到 PostgreSQL 替换,但它只是给出一条消息,指出发生了错误,所以我尝试了以下操作:https://github.com/npgsql/npgsql/issues/1514 进一步打开了窗口,但当我在框中输入内容时就崩溃了。自从将项目升级到.NET 4.5后,这个提供程序就不再出现了......

我已经多次尝试重新安装所有内容并多次重新启动 VS,并且自从升级以来我还尝试安装 GAC 文件,因为不清楚 VS 扩展是否需要它们(也是 v3.2.2)。

有谁能够阐明如何最简单地实现所有这些工作,最好不需要 .NET 4.5?

谢谢

postgresql npgsql sql-server-ce entity-framework-6 visual-studio-2015

2
推荐指数
1
解决办法
7540
查看次数

实体框架尝试添加数据库中已有表的迁移

当尝试在本地运行 ASP.NET MVC 应用程序时,一切正常。但是一旦我部署了Azure,它就会不断地给我错误:

无法更新数据库以匹配当前模型,因为存在挂起的更改并且自动迁移被禁用。

因此,我使用 Visual Studio 中的包管理器控制台连接到远程数据库并运行 Update-Database 命令。这给了我同样的错误。当我查看 SQL Server Management Studio 内的数据库时,看起来所有迁移都已应用。

因此,在此之后,我尝试运行 Add-Migration 来查看是否有任何我没有注意到的更改。它创建的迁移与前两个迁移完全相同(其中没有任何内容不属于这些迁移之一)。

到目前为止,该网站运行了大约两周,其中包括一些迁移,运行良好。我不知道如何解决这个问题,因此非常感谢您的帮助。

我确信我正在连接到正确的数据库,因为当我将其更新到目标迁移时,我看到它发生了变化。我也瞄准了正确的项目。

c# asp.net-mvc ef-code-first entity-framework-6

2
推荐指数
1
解决办法
4052
查看次数

空间/全文/哈希索引和显式索引顺序 EF 的使用不正确

Incorrect usage of spatial/fulltext/hash index and explicit index order我在尝试登录时收到此错误。

我没有使用实体框架迁移。

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    static ApplicationDbContext()
    {
        // Set the database intializer which is run once during application start
        // This seeds the database with admin user credentials and admin role
        Database.SetInitializer<ApplicationDbContext>(new CreateDatabaseIfNotExists<ApplicationDbContext>());
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }


    public virtual DbSet<Category> Categories { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我在 MySQL 中自动生成数据库的代码。我没有迁移文件。

mysql asp.net-mvc ef-code-first entity-framework-6

2
推荐指数
1
解决办法
489
查看次数

Oracle Data Provider for .NET 不支持 Oracle 19.0.96.0.0

我的 ASP.NET 应用程序之一在使用 Oracle 10g 时没有出现任何问题。我已将数据库升级到 19c 并相应地更改了连接字符串。现在项目已编译,当我运行时出现此错误。

在此输入图像描述

当我调试时,我收到此错误。

在此输入图像描述

原因是什么?我该如何解决?

c# oracle asp.net-mvc entity-framework-6 oracle-manageddataaccess

2
推荐指数
1
解决办法
5802
查看次数

实体框架6-基类的继承和导航属性

我对导航属性和继承有疑问。

这是我的问题:我有一个或多个基Person类,User并且Worker它们从继承Person。在数据库级别,我正在使用单表继承或按层次结构表(TPH)继承。因此,有一个带有鉴别符列的表。

双方UserWorker需要有Company关系,所以我想将它定义的Person类。

我这样定义我的模型:

[Table("mydb.person")]
public abstract partial class Person
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long ID { get; set; }

    public long? CompanyID { get; set; }
    [ForeignKey("CompanyID")]
    public virtual Company Company { get; set; }
    ...
}

public partial class User : Person
{
    ...
}

public partial class Worker : Person
{
    ....
}

[Table("mydb.company")]
public partial class Company
{
    public Company() …
Run Code Online (Sandbox Code Playgroud)

c# orm inheritance entity-framework entity-framework-6

1
推荐指数
1
解决办法
4757
查看次数

未找到与所有表的请求URI(...)匹配的HTTP资源

本教程为指导(OData/EntityFramework/Asp.Net).

我能够在root上执行一个简单的GET命令.

{
"@odata.context": "http://localhost:49624/$metadata",
"value": [
    {
        "name": "Appointments",
        "kind": "EntitySet",
        "url": "Appointments"
    },

    ......

    {
        "name": "Clients",
        "kind": "EntitySet",
        "url": "Clients"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

但是比这更复杂的东西给了我一个错误信息.(我正在使用null routePrefix.)

http://localhost:49624/Services
Run Code Online (Sandbox Code Playgroud)

给我:

{
    "Message": "No HTTP resource was found that matches the request URI 'http://localhost:49624/Services'.",
    "MessageDetail": "No type was found that matches the controller named 'Services'."
}
Run Code Online (Sandbox Code Playgroud)

这是我超级简单的GET

[EnableQuery]
public IQueryable<Service> Get()
{
    return db.Services;
}
Run Code Online (Sandbox Code Playgroud)

如果重要的话我正在使用Postman来测试这些命令.虽然我认为这是一个非因素.

我为每个表都有一个数据库和一个DbSet.我不知道为什么我不能访问任何这个.

WebApiConfig:

        config.MapHttpAttributeRoutes();

        ODataModelBuilder builder = new ODataConventionModelBuilder();
        builder.EntitySet<Appointment>("Appointments");
        builder.EntitySet<Service>("Services");
        builder.EntitySet<Employee>("Employees"); …
Run Code Online (Sandbox Code Playgroud)

asp.net http odata entity-framework-6

1
推荐指数
1
解决办法
2558
查看次数

从EF6中的多对多连接表返回一列

我需要在EF6中以多对多的关系从连接表中返回单个列

User { Id, Name}
Role { Id, Role}
UserToRole { UserId, RoleId}
Run Code Online (Sandbox Code Playgroud)

这是一个简化的示例,但我需要从User获取RoleId(Role.Id)的列表.

理想情况下,我只是做类似的事情

context.UserToRole.Where(x => x.UserId == id).Select(r => r.RoleId).ToList();
Run Code Online (Sandbox Code Playgroud)

但EF似乎并没有为我提供该连接表作为查询对象.

我知道我可以将所有角色作为对象拉下来,但在我的实际系统中,这是一个宽表,我想避免将所有数据拉到线上并将其放入内存的开销.

c# entity-framework entity-framework-6

1
推荐指数
1
解决办法
87
查看次数

EF6 MySQL更改所有表前缀

我在服务器上有一个mysql数据库,我已经买了一些空间.现在我想在我的网站上添加一个新的mvc应用程序来尝试一些东西,而不会弄乱我现有的应用程序.这让我有点问题,因为我只有一个数据库可用,我可以买一个新的,但我不想每次想要尝试填充时都要买一个新数据库.

所以我想,为什么不只是为我的所有表预先修复该应用程序的一些唯一值,这样我可以保持存储的数据分开,同时仍然使用相同的数据库.这让我在stackoverflow和网络上的其他地方浏览了无数篇文章.大约一天后,我偶然发现了这个金块

<!-- language: c# -->
protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Types().Configure(entity => entity.ToTable("pf_" + entity.ClrType.Name));
        base.OnModelCreating(modelBuilder);
    }
Run Code Online (Sandbox Code Playgroud)

只要您使用mssql数据库,或者删除mysql数据库并创建一个新数据库,这就完全符合我的要求.但是,我给出的数据库不是mssql数据库,丢弃它不是一个选项.

当使用现有的mysql db时,我尝试运行

update-database
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Can't find file: '.\mytestdb\dbo@002etestitems.frm' (errno: 2 - No such file or directory)
Run Code Online (Sandbox Code Playgroud)

其中"mytestdb"是我正在测试的本地数据库,"testitems"是当前/上一个表名,.frm是db格式的,我不知道这个"dbo @ 002e"是什么,我试过googling它没有用.

我的堆栈跟踪可以在这里找到. http://pastebin.com/yF2dGkm6

有没有人处于类似的情况,或者有关于如何使其工作的想法?=)

mysql ef-code-first entity-framework-6

1
推荐指数
1
解决办法
1186
查看次数

实体框架到MySql连接失败了数据库

我使用Entity Framework 6连接到mysql数据库时遇到错误

访问数据库时出错.这通常意味着与数据库的连接失败.检查连接字符串是否正确,以及是否使用了相应的DbContext构造函数来指定它或在应用程序的配置文件中找到它.

这是我的代码:

public class TestDbContext : DbContext
{
    public TestDbContext()
       : base("name="mysqldb")
    {

    }
    public DbSet<holidays> holidays { get; set; }
}


<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />   </configSections>

<connectionStrings>
<add name="mysqldb" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;userid=root;password=admin;database=bobdata;/> </connectionStrings>

<entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>
Run Code Online (Sandbox Code Playgroud)

在给出的消​​息下面的内部异常

{"通过方法'MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(System.Data.Common.DbConnection)'尝试访问方法'MySql.Data.MySqlClient.MySqlConnection.get_Settings()'失败."}

c# mysql asp.net-mvc entity-framework-6

1
推荐指数
1
解决办法
2729
查看次数