我正在观看EF 4.1的一些视频和教程,我不明白CodeFirst的任何好处(除了一些如果DB是非常小的3-4个表,我很懒于创建数据库).
到目前为止,最好的方法是在某种数据库编辑器中创建数据库,这肯定比在实体模型中编辑更快,EF可以获取每个关系并正确地创建关联.我知道命名约定等方面存在挑战,但我觉得管理Code First非常困惑,因为所有内容看起来都像代码,而且代码也太多了.
CodeFirst可以做什么,Db首先不能做什么?
我正在努力在我的EntityFramework/MVC4/DatabaseFirst项目中使用简单的成员方案.我已经找到了很多首先使用代码的例子,但是对于DB来说没什么.
我遇到的问题是InitializeDatabaseConnection抛出一个错误("无法找到请求的.Net Framework数据提供程序.它可能没有安装.")代码如下所示:
WebSecurity.InitializeDatabaseConnection("DALEntities", "tblContacts1", "ContactID", "EMail", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)
我不确定DataProvider失败了什么.如果我尝试跟踪'into'InitializeDatabaseConnection调用,它会立即抛出错误.
我错过了什么?
信息:
DALEntities是EF其余部分使用的connectionString的名称.以下代码工作正常....
public ActionResult Test() {
using (var db = new DALEntities()) {
var query = from i in db.TBLINVENTORies
orderby i.ITEMNAME
select i;
var cnt = query.Count();
string str = "Total Inventory: " + cnt;
return Content(str);
}
}
Run Code Online (Sandbox Code Playgroud)
我在web.config中的连接字符串部分:
<connectionStrings>
<add name="DALEntities" connectionString="metadata=res://*/DAL.DAL.csdl|res://*/DAL.DAL.ssdl|res://*/DAL.DAL.msl;provider=System.Data.SqlClient;provider connection string="data source=SOMECOMPUTER;initial catalog=SOMEDB;persist security info=True;user id=SOMEID;password=SOMEPASS;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这篇文章似乎问了同样的问题(但是在模型优先的背景下),但还没有解决方案:使用SimpleMembership和EF模型优先
另外,我看到WebSecurity.InitializeDatabaseConnection()帮助文本有一个重载:Initializes the membership system ((blah blah <snip> ProviderName: the …
首先,我已经阅读了这些问题/答案:
这些似乎都适用于EF5之前的EF版本,我的情况似乎不适合这些答案.所以,让我描述一下我的情况.
Entity Framework | Reverse engineer code first.现在,我想尝试自动迁移,我在Ruby on Rails中有一些经验.这是我做的:
Enable-Migrations.由于连接字符串和app.config被使用而有点麻烦,但最终得到了它.但是,这个MSDN页面说这应该自动生成第一次迁移,以使我达到我已经到达的程度.它没有.Add-Migration InitialSchema完成第1步中没有自动完成的工作.Add-Migration AddSerialToLogEntries,并显示:无法生成显式迁移,因为以下显式迁移尚未处理:[201307190100268_InitialSchema].在尝试生成新的显式迁移之前应用挂起的显式迁移.
尝试在我现有的数据库上应用迁移失败,这并不奇怪.
我上面提到的其他答案基本上说我运气不好,但就像我说的那些是旧版本的实体框架.我有什么选择吗?
在写这个问题时,我想我可以使用SQL Server Management Studio将我的数据导出到SQL脚本,删除整个数据库,让EF创建它,然后运行脚本来重新获取我的数据......我会在明天有空的时候尝试,但我想听听是否还有其他选择,因为我不是100%肯定会工作,并且不愿意在流程中插入的数据中出现任何错误.
我在Database First方法中使用Entity Framework 5,我正在使用edmx文件.
我的大多数实体都有6个常见字段.像场CreatedAt,CreatedBy等等.现在,我实现一些功能只能应用于扩展IQueryable那些有共同的领域实体.但是当我实现扩展方法时,它可以被任何类型IQueryable的类型T访问,我只能定义类型T应该总是一种类型.
所以,我认为我可以为具有公共字段的实体提供基类,并将类型T定义为该基类型.但是,我似乎无法做到这一点.
关于如何解决这个问题或者实现我上面解释过的任何想法?
c# asp.net-mvc ef-database-first asp.net-mvc-4 entity-framework-5
我在我的应用程序中使用Entity framework v 6.1.1.
我的数据库有2个表User,Location.
User table
-----------
UserID
HomeCityId(FK -> LocationId)
CurrentCityId(FK -> LocationId)
Location table
LocationId
LocationName
Run Code Online (Sandbox Code Playgroud)
使用DB First方法,我为这两个表创建了一个Entity数据模型.
生成的User表实体类
public int UserId;
public int HomeCityId;
public int CurrentCityId;
public virtual Location Location { get; set; }
public virtual Location Location1 { get; set; }
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些虚拟属性命名为HomeCity和CurrentCity而不是Location和Location1?
entity-framework navigation-properties database-first ef-database-first
我使用本教程来创建数据库模型。
I decided to create another assembly for abstractions such as IRepository, IFooService by reading this quote of "Programming .NET Components" by Juwal Lowy:
Because interfaces can be implemented by multiple components, it's good practice to put them in a separate assembly from that of the implementing components.
My solution structure could look like this:
PersonsApp.Solution
--PersonsApp.WebUI
-- Controllers (PersonController)
--PersonApp.Common
--Core folder
-IGenericRepository.cs (Abstraction)
-IUnitOfWork.cs (Abstraction)
--Repositories folder
-IPersonRepository.cs (Abstraction)
--PersonApp.Persistence
--Infrastructure folder
-DbDactory.cs (Implementation)
-Disposable.cs …Run Code Online (Sandbox Code Playgroud) c# repository-pattern ef-database-first entity-framework-core asp.net-core
我刚刚开始使用Entity Framework 4.1,尝试"数据库优先"模式.当EF使用"ADO.Net DbContext Generator"生成Model类时,它不应该使用[Key]属性识别类的主键吗?没有它,它似乎与T4 MVCScaffolding不兼容.
以下是详细信息:
使用实体数据模型设计器GUI,我从现有数据库向模型添加了一个简单的"国家/地区"表.GUI正确地将名为"PK"的单个整数身份密钥字段标识为我的主键.(唉!我是新用户所以我无法添加屏幕截图.我已经在下面添加了CSDL.)但是,当EF使用"ADO.Net DbContext Generator"生成代码时,它无法识别PK field作为生成的类中的关键字段(请参阅下面的代码摘录).
"国家"表的CSDL:
<edmx:ConceptualModels>
<Schema Namespace="EpiDataModel" Alias="Self" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
<EntityContainer Name="EpiModelEntities" annotation:LazyLoadingEnabled="true">
<EntitySet Name="countries" EntityType="EpiDataModel.country" />
</EntityContainer>
<EntityType Name="country">
<Key>
<PropertyRef Name="PK" />
</Key>
<Property Name="PK" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="Abbreviation" Type="String" Nullable="false" MaxLength="200" Unicode="false" FixedLength="false" />
<Property Name="Name" Type="String" MaxLength="1024" Unicode="false" FixedLength="false" />
<Property Name="Description" Type="String" MaxLength="1024" Unicode="false" FixedLength="false" />
<Property Name="Sequence" Type="Int32" />
</EntityType>
</Schema>
</edmx:ConceptualModels>
Run Code Online (Sandbox Code Playgroud)
这是自动生成的代码:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template. …Run Code Online (Sandbox Code Playgroud) primary-key entity-framework-4.1 ef-database-first dbcontext asp.net-mvc-scaffolding
我很抱歉,如果这是在错误的地方,但我认为是.
所以我在创建一个MVC3互联网应用程序时,我使用了数据库第一个方法,并为我生成了我的类.我是MVC3的新手,对于c#和visual studio来说还是新手,虽然我确实有一点经验.
自动生成的代码警告编辑可能会导致意外结果,如果重新生成代码,将删除更改.据我所知,这意味着更改数据库,重新运行tt文件或更新模型.
但是,编辑它是否可行,只需跟踪我需要重新生成的更改,或者有更好的方法来进行修改吗?
谢谢你的帮助.
不知道我的设置发生了什么,但是最近,当我用新字段或具有特定表(>的外键的新表)更新数据库时Person,我的数据库刷新会获取新字段,但不识别FK与...的关系Person.大多数其他表的外键工作正常.
可能缺少什么设置?
也许一个线索:Person充当其他几个表的基本类型,例如Manager,Customer所有表都具有名称,出生日期,性别等的基本特征,而后代表具有也作为外键的主键.Person.与子代表的FK关系也未被识别.
我正在尝试在已创建数据库的现有系统上构建一个 aspnetcore 应用程序,我将在其上添加一些表。
我对数据库进行了逆向工程,将现有表作为实体添加到我的应用程序中,并且我编写了自己的实体,稍后将添加这些实体。最后,所有实体都添加到单个 DbContext 中。
我的要求如下:
注意:我不想接触生成的迁移代码。
有没有合适的方法来处理这种情况?
entity-framework ef-database-first entity-framework-migrations ef-core-2.2
c# ×5
.net ×1
asp.net-core ×1
asp.net-mvc ×1
dbcontext ×1
ef-core-2.2 ×1
entity-framework-migrations ×1
primary-key ×1