使用实体框架处理数据库

本文关键字:处理 数据库 框架 实体 | 更新日期: 2023-09-27 18:01:39

我有两个问题的数据库处理使用实体框架。我正在使用SQL Server 2012/14 web api 2 (VS 2012/13),但这并不重要,因为我的问题是关于EF6的代码优先方法。在代码优先的方法中,如果表不存在,EF会为你创建它(EF的强大功能)。

1.)通常当EF创建一个表,它使用nvarchar字符串数据类型,但我需要使用varchar。如何在EF中指定?

2.)我还需要使用EF创建存储过程(如果它不存在于DB中)。我如何从EF中调用它?存储过程接受输入参数并给出输出记录。

如果模型或逻辑发生任何变化,它应该自动反映在DB中。(非常重要)

请求:请保持你的解释的理解水平是超级容易的。我刚刚在YouTube上看到了一些视频,并试图理解它并将其应用到我的项目中。但我不想只是复制代码,我想了解它,所以请提供解释的每一行。多种解决方案将受到赞赏。(我指的是数据注释和Fluent API)

我的最后一个选项:我正在考虑创建脚本并在"up"函数中执行它(迁移发生并创建所有SQL对象),但这种方法的问题是,如果我的模型有任何变化,我必须在该脚本中反映相同的变化,因为它是硬编码的。当我别无选择时,我将使用这个选项。我还没有尝试过这个选项,所以我可能完全错了。

提前谢谢。

使用实体框架处理数据库

1)如果您想指定要在表的实际列中使用的数据库类型,下面是它的代码(使用Fluent API):

modelbuilder.Entity<Department>()   
    .Property(p => p.Name)   
    .HasColumnType("varchar");

来源:https://msdn.microsoft.com/en-us/data/jj591617

1.10

2)如果您希望实体框架生成脚本,将创建所需的存储过程,请查看这篇文章:https://msdn.microsoft.com/en-us/data/dn468673。我不认为从那里复制源代码并粘贴到这里是一个好主意,所以如果你有任何具体的问题,请随时提出。

如果您想自己创建存储过程脚本,然后使用实体框架调用它,那么请查看这篇文章:https://msdn.microsoft.com/en-us/data/jj557860。注意:这个选项往往有一个与之相关的维护成本。但是,如果实体框架生成的存储过程不如您编写的存储过程那样高效,那么这样做是值得的。

再次,请随时提出任何具体问题。