我在Microsoft SQL Server 2008 R2中有一个表,调用Page了一个名为的主键ID.我有另一个Navigation用列调用的表PageID.PageID是对一种独特的外键引用ID的列Page.这会在记录Navigation和Page记录之间创建一对一的关系.
从数据库生成模型时,它会创建一对多关系,其中a Page包含Navigation记录列表.
这只是实体框架检测到涉及外键并忽略数据库中列的唯一性吗?
PageID列的SQL Navigation是:
[PageID] INTEGER FOREIGN KEY REFERENCES [Page](ID) UNIQUE NOT NULL
Run Code Online (Sandbox Code Playgroud)
ID列的SQL Page是:
[ID] INTEGER PRIMARY KEY IDENTITY(0, 1) NOT NULL
Run Code Online (Sandbox Code Playgroud)
这是我原来的解决方案,这是Ladislav提到的.
该PageID列的SQL Navigation是:
[ID] INTEGER PRIMARY KEY FOREIGN KEY REFERENCES [Page](ID) NOT NULL
Run Code Online (Sandbox Code Playgroud) 我在我的数据库中添加了一个函数,我希望它在我的代码中可以调用.对于存储过程,我右键单击SP并在模型浏览器中选择添加功能导入来实现此目的,但此选项不适用于我的功能.我该怎么做才能导入这个功能?
stored-procedures user-defined-functions entity-framework-4 database-first
由于EF的这个小怪癖,我有一个令人沮丧的情况.这是一个简单的行为演示.首先是数据库架构:

如您所见,RestrictedProduct是产品的一个特例,我打算Product用一些特殊的代码创建一个子类.
现在我导入到EF数据模型:

哎呀!EF看到RestrictedProduct只有2个字段,都是FK,所以它将它映射为Product和之间的一对多关系Restriction.所以我回到数据库并添加一个Dummy字段RestrictedProduct,现在我的EF模型看起来好多了:

但那个Dummy领域是愚蠢而毫无意义的.也许我可以删除它?我从数据库表和实体模型中删除了该字段,然后从数据库刷新模型...

不好了!该Product-Restriction协会以新名称(RestrictedProduct1)返回!另外,它不会编译:
错误3034:从行(x,y)开始映射片段时出现问题:具有可能不同键的两个实体映射到同一行.确保这两个映射片段将AssociationSet的两端映射到相应的列.
有没有办法防止这种行为,没有将Dummy字段保留在RestrictedProduct桌面上?
我正在使用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
我正在开发一个 ASP.NET MVC4 应用程序(数据库优先方法),现在我从数据库更新了模型,然后我收到了这个错误:
从第 1106 行开始映射片段的问题:表 Trn_BenchProficiency 的键 (Trn_BenchProficiency.BenchNumber) 的潜在运行时冲突:列 (Trn_BenchProficiency.BenchNumber) 被映射到 EntitySet Trn_BenchProficiency 的属性 (Trn_BenchProficiency),但它们不构成 BenchProficiency 的概念侧实体集。关键属性(Trn_BenchProficiency.AssessedDate、Trn_BenchProficiency.BenchNumber、Trn_BenchProficiency.Proficiency、Trn_BenchProficiency.SkillAllignmentID、Trn_BenchProficiency.SkillID)。
当我双击错误visual studio时显示:

请帮助我,这是什么问题?我真的找不到错误。
asp.net-mvc entity-framework database-first ef-database-first asp.net-mvc-4
我有一个从 MS SQL 数据库创建的非常复杂的 EF 模型。(我使用的是 EF 6.1.0。)我向数据库添加了一个表并执行了“从数据库更新模型”。不幸的是,出了点问题,虽然在 .edmx 文件(如 XML 编辑器中看到的)中为表及其关系(所有正确和完整,据我所知)生成了大量 XML,但没有生成类声明. 当我在 .tt 下查看模型中所有表的 .cs 文件所在的位置时,该类没有 .cs 文件。由于该类已经在 .edmx 文件中,我无法重复“从数据库更新模型”。
过去我以这种方式在模型中添加了许多表,我看不出这个表有什么不同。
以下是我尝试过的一些事情:
有人有建议吗?先感谢您。
c# sql-server visual-studio database-first entity-framework-6
到目前为止,我正在创建一个classLibrary项目,并从exixting数据库中插入新的Ado.net Entity数据模型和genareting.类和对象类代码自动创建.这对我来说并不重要.
但我想这样做并将ObjectContext类(例如:SomeEntities)和table classess分离为两个calss库.
当我更改数据库表属性时,我将更新edmx模型,类将自动更新.
有没有办法做到这一点?我没有使用codefirst因为有一个数据库和数据,我不是同样使用modelfirst,我使用databasefirst但不能分开
我正在使用Entity Framework 4和Database First绑定,而EF并没有为我的一些表生成实体.我没有收到任何错误,无论我从设计图面上的"从数据库更新模型"弹出菜单中选择要生成的表多少次,模型中仍然缺少相同的表.
我在向导中没有错误.他们只是没有生成.有线索吗?
我正在建立一个MVC .NET网站.
由于我是一名学习首先设计数据库的老派程序员,因此我选择了数据库第一种方法.我也在使用"代码生成"来创建扩展名的文件.tt.到目前为止,一切都在发挥作用,除了一件令我烦恼的事情.
经典场景:
然后我回到我的代码和那些用于工作的东西,就像我放在模型字段顶部的特殊DisplayName标签一样被删除了.
例如,如果我有这个:
public partial class Blog
{
public Blog()
{
this.BlogComments = new HashSet<BlogComment>();
}
public int IDBlog { get; set; }
public string Title { get; set; }
[AllowHtml]
public string Content { get; set; }
public System.DateTime DateCreated { get; set; }
public string Author { get; set; }
public virtual ICollection<BlogComment> BlogComments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它会变成
public partial class Blog
{
public Blog()
{
this.BlogComments = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 EntityFramework Core(数据库优先方法)从现有数据库创建模型。模型已创建,但表名和列名更改为 C# 风格。因为我希望模型仍然使用数据库中的精确表名和列名,所以根据Entity Framework Core 工具参考,我在命令行中附加了“--use-database-names”
以下是在包管理器控制台中执行的命令:
Scaffold-DbContext "Server=aServer;Database=someDb;Trusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -o Models --use-database-names
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Scaffold-DbContext:找不到接受参数“--use-database-names”的位置参数。行:1 字符:1
- Scaffold-DbContext“服务器=aServer;数据库=someDb;Trusted_Conn ...
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
- CategoryInfo:InvalidArgument:(:) [Scaffold-DbContext],ParameterBindingException
- FullQualifiedErrorId:PositionalParameterNotFound,Scaffold-DbContext
有人遇到过这个问题吗?我错过了什么?提前致谢!
以下是简单项目的一些基本信息。
集成开发环境:Visual Studio 2017
目标框架:.NET Core 2.1
安装的 NuGet 包:
Microsoft.EntityFrameworkCore.Design(2.2.0)
Microsoft.EntityFrameworkCore.SqlServer(2.2.0)
Microsoft.EntityFrameworkCore.Tools(2.2.0)
Microsoft.EntityFrameworkCore.SqlServer.Design(1.1.6)
Run Code Online (Sandbox Code Playgroud) 为此,花费更多的时间来梳理SO.这是设置
这就是我在存储库中创建Db Context的方式
public class TransactionRepository : BaseRepository, ITransactionRepository
{
AccountingEntities _db = new AccountingEntities();
// repository methods
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器中
public class InvoiceController : BaseController
{
private ITransactionRepository _txnRepository;
public InvoiceController()
{
_txnRepository = new TransactionRepository();
}
public InvoiceController(ITransactionRepository t)
{
_txnRepository = t;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我已添加到web.config
<system.data>
<DbProviderFactories>
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.8.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
分析这些连接的后续步骤是什么?慢慢来,因为这是我第一次接触实体框架,所以假设EF连接/上下文细节很少.
entity-framework-4.1 database-first ef-database-first mvc-mini-profiler
所以,我已经按照ADO.NET团队博客的指示尝试制作一个小型测试项目.我仔细检查了一切.它似乎不起作用,并一直说连接字符串丢失.
http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx
步.1构建此UserModels.dll.在dll,App.Config文件中,edmx生成了这个连接字符串:(在创建它时点击'test'按钮,它成功连接,并从'UserDatabase'生成所有表的edmx图)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="UserModelsContainer" connectionString="metadata=res://*/UserModels.csdl|res://*/UserModels.ssdl|res://*/UserModels.msl;provider=System.Data.SqlClient;provider connection string="data source=MyDesktop\SQL2008;initial catalog=UserDatabase;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
第2步然后我做了一个测试项目:
class UnitTetst1 ....
TestMethod1()....
using (var db = new UserModelsContainer()) {
int i = db.Users.Count(); // <---expecting '0' for a new db, but I get an exception
}
Run Code Online (Sandbox Code Playgroud)
---------问题在这里-----------------
步骤3.运行测试.然后我得到一个错误InvalidOperationException像这样:
"No connection string named 'UserModelsContainer' could be found in the application config file."
Run Code Online (Sandbox Code Playgroud)
好像DbContext不知道在哪里从App.Config中取出connectionStrings?
请帮帮忙~~
我正在使用数据库第一种方法和DbContext.我的数据模型中有几个继承结构(TPH).但是DbContext只为基类创建一个DbSet,而为子类创建没有.我应该如何检索指定子类的所有实体?
我无法根据映射标准编写查询,因为我必须从数据模型中删除这些字段.
我可以简单地将新的DbSet添加到Entities类(部分类)吗?
inheritance entity-framework-4 table-per-hierarchy database-first dbcontext
database-first ×13
c# ×4
dbcontext ×2
.net ×1
.net-4.5 ×1
.net-core ×1
asp.net-mvc ×1
inheritance ×1
scaffold ×1
sql ×1
sql-server ×1