标签: ef-database-first

为什么EF DataBase First不使用getdate()?

我首先使用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属性设置createdateComputed.

有没有办法让EF自动生成DateTime列而无需手动设置?

entity-framework ef-database-first

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

实体框架DB首先:将关联表转换为导航属性

我正在使用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

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

实体框架5,首先从代码切换到数据库?

我已经使用代码创建了一个数据库.它运作良好.此后,对Visual Studio外部的数据库进行了许多更改.如此多的迁移尝试都会产生错误.所以我的问题是,有没有办法首先将解决方案从代码切换到数据库?

c# database ef-code-first ef-database-first entity-framework-5

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

实体框架数据库首先如何更改实体以使它们从基类派生

我有一个数据库已经充满了包含数据的表.我所看到的是所有表共有5列:

  • Id-long,key
  • IsDeleted,位
  • DateDeleted,SmallDatetime
  • LastUpdated,SmallDatetime
  • LastUpdatedUser,nvarchar

现在,有一些常见的操作是基于当前在任何地方复制的那些字段完成的

我想要的是创建一个基类,它只包含这些公共属性和为它们完成的方法,并使每个其他实体派生自此.

我不需要或者想要在数据库本身上拥有这个基本实体,这只是我想帮助编码部分的东西.

问题是这是数据库第一,我不能改变数据库所以我必须使用的是POCO类和EDMX.

我怎样才能实现这一目标?

.net c# entity-framework ef-database-first entity-framework-5

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

带有EF 6的MySql连接器

我在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,但没有任何改变。有人可以让我知道发生了什么吗?

谢谢

mysql ado.net ef-database-first entity-framework-6

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

实体框架6 - 数据库优先 - 从模型中删除应该仍然存在于Db中的列

我有一个数据库表,我已经进入我的edmx.但是,我不希望在模型中存在几列,因为它们仅用于审计目的.列是"CreatedOn"和"UpdatedOn",只是创建/更新表行时的时间戳.

问题是我可以轻松地从概念模型中删除2列,但如果另一个开发人员执行"从数据库更新",这些列将被拉回.有什么办法可以强制设计者永远不要拉这些文件在?也许在某种程度上在T4模板?

entity-framework ef-database-first

5
推荐指数
0
解决办法
623
查看次数

预生成实体框架视图

我正在研究使用Entity Framework 6.1.3的MVC 5应用程序.我正在尝试通过预生成视图来优化第一次调用,通常需要1-4秒.我明白为什么会这样,但我觉得我错过了某个重要的一步.

我当前的测试运行相同的功能五次,以使用EF从我的数据库中提取一组对象.当我在我的edmx中设置'嵌入输出目录'中运行时,我得到以下结果:

**

  • 第一次EF呼叫:2617毫秒
  • 第二次EF呼叫:19毫秒
  • 第三次EF呼叫:19毫秒
  • 第四次EF呼叫:17毫秒
  • 第五次EF呼叫:20毫秒

**

我期待这一点,因为EF正在生成访问数据库的本地视图......

当我切换到"复制到输出目录"时,请仔细检查我的文件是否被复制到bin文件夹并且我的连接字符串已更新,然后运行相同的测试我得到类似的结果:

**

  • 第一次EF呼叫:2546毫秒
  • 第二次EF呼叫:19毫秒
  • 第三次EF呼叫:18毫秒
  • 第四次EF呼叫:18毫秒
  • 第五次EF呼叫:21毫秒

**

第一次通话没有变化,这很奇怪.我添加了EF Power Tools,右键单击我的edmx => Entity Framework => Generate Views.我为每个表/视图创建了一个'Model1.View.cs'文件,所以我觉得我在正确的道路上.当我再次运行测试时,我得到了相同的结果.在新生成的"Model1.View.cs"文件的每个方法中放置一个断点,表明它永远不会被击中.

我错过了重要的一步吗?如何告诉EF使用EF Power Tools创建的文件,或者如何在我在线阅读时使复制到输出目录工作?

c# asp.net-mvc entity-framework ef-database-first

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

如何使用EntityFramework 7和Asp.Net 5调用SQL存储过程

在过去的几天里,我正在寻找一些关于如何使用控制器方法调用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

5
推荐指数
2
解决办法
2万
查看次数

如何在 EF 6 中对字符串类型的字段创建唯一约束?

首先,我是 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

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

EF DBFirst,表已从模型中删除

我的EF数据库优先EDMX模型中发生了一些奇怪的事情。我想在数据库中进行一些更改后更新模型。更新操作删除了未接受任何更改的表。该表已经存在于模型中很长时间了,从来没有任何问题。

显然,我收到错误11007:实体类型'MyTable'未映射。

我尝试了几件事:

  • 关闭EDMX而不保存,然后重试:同样的问题。
  • 重做“从数据库更新模型”,选中已删除表前面的框...但是它没有添加到模型中(?)
  • 关闭Visual Studio,然后重试:同样的问题。
  • 尝试使用另一个EDMX(解决方​​案中有5-6个模型,所有模型都链接到相同的(大)数据库):那里的表没有被删除(!)
  • 重命名数据库中的表:使用新名称添加该表。
  • 从链接到该表的所有内容中清除EDMX的XML,然后重试更新:无效。

是什么导致未将特定表添加到特定的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个实体数据模型,它仍然可以正常运行)。

编辑2

这个错误让我发疯。在同一edmx中,突然出现了其他五个彼此不链接的表。我试图用另一个名称创建另一个EDMX,它具有相同的错误。我试图一张一张地添加表,突然出现了问题。无论我添加哪个表,模型中存在的其他5个都将消失,并且出现错误11007。

如果有人有最小的想法,那真的很受欢迎。

编辑3

我创建了一个新的解决方案,将表添加到新的实体数据模型中……问题仍然存在。EF拒绝映射表。 当我们执行“从数据库更新”时,VS是否会创建一些日志?

我要尝试的下一步是创建VM并尝试使用它。

entity-framework ef-database-first visual-studio-2017

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