当我在 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
我花了一天时间尝试将 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
当尝试在本地运行 ASP.NET MVC 应用程序时,一切正常。但是一旦我部署了Azure,它就会不断地给我错误:
无法更新数据库以匹配当前模型,因为存在挂起的更改并且自动迁移被禁用。
因此,我使用 Visual Studio 中的包管理器控制台连接到远程数据库并运行 Update-Database 命令。这给了我同样的错误。当我查看 SQL Server Management Studio 内的数据库时,看起来所有迁移都已应用。
因此,在此之后,我尝试运行 Add-Migration 来查看是否有任何我没有注意到的更改。它创建的迁移与前两个迁移完全相同(其中没有任何内容不属于这些迁移之一)。
到目前为止,该网站运行了大约两周,其中包括一些迁移,运行良好。我不知道如何解决这个问题,因此非常感谢您的帮助。
我确信我正在连接到正确的数据库,因为当我将其更新到目标迁移时,我看到它发生了变化。我也瞄准了正确的项目。
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 中自动生成数据库的代码。我没有迁移文件。
我的 ASP.NET 应用程序之一在使用 Oracle 10g 时没有出现任何问题。我已将数据库升级到 19c 并相应地更改了连接字符串。现在项目已编译,当我运行时出现此错误。
当我调试时,我收到此错误。
原因是什么?我该如何解决?
c# oracle asp.net-mvc entity-framework-6 oracle-manageddataaccess
我对导航属性和继承有疑问。
这是我的问题:我有一个或多个基Person类,User并且Worker它们从继承Person。在数据库级别,我正在使用单表继承或按层次结构表(TPH)继承。因此,有一个带有鉴别符列的表。
双方User并Worker需要有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) 以本教程为指导(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) 我需要在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似乎并没有为我提供该连接表作为查询对象.
我知道我可以将所有角色作为对象拉下来,但在我的实际系统中,这是一个宽表,我想避免将所有数据拉到线上并将其放入内存的开销.
我在服务器上有一个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
有没有人处于类似的情况,或者有关于如何使其工作的想法?=)
我使用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()'失败."}
asp.net-mvc ×5
c# ×5
mysql ×3
asp.net ×1
http ×1
inheritance ×1
npgsql ×1
odata ×1
oracle ×1
orm ×1
postgresql ×1
sql-server ×1