我首先使用EF 4.1和数据库.
示例表:
CREATE TABLE dbo.Product(
[ID] [int] IDENTITY(1,1) not null,
Title nvarchar(200) not null,
CreateDate datetime not null default(getdate()),
)
Run Code Online (Sandbox Code Playgroud)
当我添加一个新行时,我得到一个关于DateTime类型溢出的异常.
该getdate()数据库的设置是无效的.
我必须将字段的storeGeneatePattern属性设置createdate为Computed.
有没有办法让EF自动生成DateTime列而无需手动设置?
我正在使用Entity Framework Database First,但我想从Code First范例中复制以下行为:
在实体框架代码中,您可以按照以下方式执行操作:
public class Thing
{
public int ID { get; set; }
ICollection<Stuff> Stuffs { get; set; }
}
public class Stuff
{
public int ID { get; set; }
ICollection<Thing> Things { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并且数据库将生成和Associative表来表示多对多的关系.
我正在使用Database First和遗留数据库.我引入了实体,它包含了表示两个表之间多对多关系的关联表.
由于关联表作为实体包含在内,因此导航属性如下:
public class Thing
{
public int ID { get; set; }
public ICollection<ThingStuff> ThingStuffs { get; set; }
}
public class ThingStuff
{
public int ThingID { get; set; }
public int StuffID { …Run Code Online (Sandbox Code Playgroud) entity-framework database-first ef-database-first .net-4.5 entity-framework-5
我已经使用代码创建了一个数据库.它运作良好.此后,对Visual Studio外部的数据库进行了许多更改.如此多的迁移尝试都会产生错误.所以我的问题是,有没有办法首先将解决方案从代码切换到数据库?
c# database ef-code-first ef-database-first entity-framework-5
我有一个数据库已经充满了包含数据的表.我所看到的是所有表共有5列:
现在,有一些常见的操作是基于当前在任何地方复制的那些字段完成的
我想要的是创建一个基类,它只包含这些公共属性和为它们完成的方法,并使每个其他实体派生自此.
我不需要或者想要在数据库本身上拥有这个基本实体,这只是我想帮助编码部分的东西.
问题是这是数据库第一,我不能改变数据库所以我必须使用的是POCO类和EDMX.
我怎样才能实现这一目标?
.net c# entity-framework ef-database-first entity-framework-5
我在MySql Connector(6.8.3)和EF6上遇到了一个奇怪的问题。我在一个WebApi项目中工作,在该项目中我将MySql和EF6与数据库优先方法结合使用。一切正常[即使部署在测试服务器上也是如此],直到我在连接字符串中将数据库从“测试”数据库更改为“生产”数据库[只是数据库名称]并更新了模型[只是看没有损坏! ]。之后,它无法连接到数据库。因此,我改回了连接字符串并重新构建了解决方案,然后得到了一堆“映射”警告。我删除了模型,并尝试再次从数据库中创建模型。现在,我收到以下消息
您的项目引用了Entity Framework的最新版本;但是,找不到与您的数据连接兼容的Entity Framework数据库提供程序。退出此向导,安装兼容的提供程序,并在执行此操作之前重建项目
这是配置文件
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.data>
<DbProviderFactories>
<clear/>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySql.Data.MySqlClient" description="ADO.Net driver for MySQL" invariant="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.8.3.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
我尝试从Nuget重新安装连接器和EF,但没有任何改变。有人可以让我知道发生了什么吗?
谢谢
我有一个数据库表,我已经进入我的edmx.但是,我不希望在模型中存在几列,因为它们仅用于审计目的.列是"CreatedOn"和"UpdatedOn",只是创建/更新表行时的时间戳.
问题是我可以轻松地从概念模型中删除2列,但如果另一个开发人员执行"从数据库更新",这些列将被拉回.有什么办法可以强制设计者永远不要拉这些文件在?也许在某种程度上在T4模板?
我正在研究使用Entity Framework 6.1.3的MVC 5应用程序.我正在尝试通过预生成视图来优化第一次调用,通常需要1-4秒.我明白为什么会这样,但我觉得我错过了某个重要的一步.
我当前的测试运行相同的功能五次,以使用EF从我的数据库中提取一组对象.当我在我的edmx中设置'嵌入输出目录'中运行时,我得到以下结果:
**
**
我期待这一点,因为EF正在生成访问数据库的本地视图......
当我切换到"复制到输出目录"时,请仔细检查我的文件是否被复制到bin文件夹并且我的连接字符串已更新,然后运行相同的测试我得到类似的结果:
**
**
第一次通话没有变化,这很奇怪.我添加了EF Power Tools,右键单击我的edmx => Entity Framework => Generate Views.我为每个表/视图创建了一个'Model1.View.cs'文件,所以我觉得我在正确的道路上.当我再次运行测试时,我得到了相同的结果.在新生成的"Model1.View.cs"文件的每个方法中放置一个断点,表明它永远不会被击中.
我错过了重要的一步吗?如何告诉EF使用EF Power Tools创建的文件,或者如何在我在线阅读时使复制到输出目录工作?
在过去的几天里,我正在寻找一些关于如何使用控制器方法调用Stored Procedure内部的教程.Web APIEntityFramework 7
我通过的所有教程都反过来展示它,即Code First接近.但我已经有了一个数据库,我需要用它来构建一个Web API.各种业务逻辑已经编写为存储过程和视图,我必须使用来自Web API的那些逻辑.
问题1:这是否可以继续使用上述Database First方法EF7并使用数据库对象?
我EntityFramework 6.1.3通过以下NuGet命令安装到我的包中:
install-package EntityFramework
它将6.1.3版本添加到我的项目中,但立即开始向我显示错误消息(请参阅下面的屏幕截图).我不清楚如何解决这个问题.
我有另一个测试项目,在其中project.json我可以看到两个条目如下:
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final",
但是,当我在Nu-Get包管理器中搜索时,我不会看到这个版本!只有6.1.3即将到来.
我的主要目标是从现有数据库中使用已编写的存储过程和视图.
1)我不想使用ADO.Net,而是我想ORM使用EntityFramework
2)如果EntityFramework 6.1.3有来电的能力Stored Procs,并Views从已经存在的数据库,我怎么能解决错误(截图)?
实现这一目标的最佳做法是什么?
c# sql-server ef-database-first entity-framework-core asp.net-core-mvc
首先,我是 MVC 的新手。
我有一个 Project 表,其中包含 ProjectID、ProjectNumber 和 ProjectDescription 字段。ProjectId 是 int 类型的 entityKey,ProjectNumber 需要是唯一约束。
如何在实体框架 6.1.3 中执行此操作?
在我的项目课上我有
public int ProjectID { get; set; }
[Index(IsUnique = true)]
[StringLength(200)]
public string ProjectNumber { get; set; }
public string ProjectDescription { get; set; }
Run Code Online (Sandbox Code Playgroud)
当我从模型生成数据库时,该字段在数据库中未设置为唯一。
我究竟做错了什么?
c# asp.net-mvc entity-framework ef-database-first entity-framework-6
我的EF数据库优先EDMX模型中发生了一些奇怪的事情。我想在数据库中进行一些更改后更新模型。更新操作删除了未接受任何更改的表。该表已经存在于模型中很长时间了,从来没有任何问题。
显然,我收到错误11007:实体类型'MyTable'未映射。
我尝试了几件事:
是什么导致未将特定表添加到特定的emdx模型文件中?对我来说,这似乎是一个错误。
注意 在删除表之前,该表在“从数据库更新”向导的“刷新”选项卡中列出。
VS 2017 15.4.2(问题出现前一天完成的最新更新...?)
编辑-更多信息:该表名为“ DocumentStatuses”,由两列组成。
CREATE TABLE [cov].[DocumentStatuses](
[Id] [int] NOT NULL,
[Label] [varchar](50) NOT NULL,
CONSTRAINT [PK_DocumentStatus] PRIMARY KEY CLUSTERED ( [Id] ASC )
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
DocumentStatus实体将Id列映射到枚举。在出现此问题之前,它一直运行良好(但是对于其他2个实体数据模型,它仍然可以正常运行)。
这个错误让我发疯。在同一edmx中,突然出现了其他五个彼此不链接的表。我试图用另一个名称创建另一个EDMX,它具有相同的错误。我试图一张一张地添加表,突然出现了问题。无论我添加哪个表,模型中存在的其他5个都将消失,并且出现错误11007。
如果有人有最小的想法,那真的很受欢迎。
我创建了一个新的解决方案,将表添加到新的实体数据模型中……问题仍然存在。EF拒绝映射表。 当我们执行“从数据库更新”时,VS是否会创建一些日志?。
我要尝试的下一步是创建VM并尝试使用它。