如何使用codefirst EF4创建非持久属性?
MS说有一个StoreIgnore属性,但我找不到它.
有没有办法使用EntityConfiguration设置它?
我有一个具有char属性的对象:
public class Product
{
public char Code
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
实体框架似乎无法映射字符(当我从模型对象创建数据库模式时,数据库中缺少此字段).无论如何我可以使用流畅的API映射char(例如字符串)吗?我不想更改模型对象,因为它们是遗留共享库的一部分.
我有这个班级和表格:
public class Foo
{
public Guid Id {get;set;}
public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
create table Foo
(
id uniqueidentifier primary KEY DEFAULT (newsequentialid()),
name nvarchar(255)
)
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试保存新的foo时,第一个使用了0000-000-00 ... id和第二个也是,所以我得到了约束异常
有谁知道修复?
code-first entity-framework-4 ef4-code-only entity-framework-ctp5
如何首先使用EF 4代码将实体映射到数据库视图?
有没有办法通过派生EntityConfiguration类来做到这一点?
我有一个数据库,我使用2种不同的模式.模式就像名称空间(如果我错了,请纠正我).这样我有1个db和当前2个模式...因此1个模式中的表可以与其他模式中的表命名相同,因为它们位于不同的模式中.
如何让EF Code首先与不同的模式进行通信而不是默认模式?
是否与MapSingleType和覆盖方法有关,还是我可以做其他事情?
任何帮助真的很感激.
我在"仅代码"模式下使用Entity Framework CTP5.我正在对从数据库返回的对象运行LINQ查询,因为查询运行速度非常慢.有什么方法可以让我从查询中获取生成的SQL语句?
Topic currentTopic =
(from x in Repository.Topics
let isCurrent = (x.StoppedAt <= x.StartedAt || (x.StartedAt >= currentTopicsStartedAtOrAfter))
where x.Meeting.Manager.User.Id == user.Id && isCurrent
orderby x.StartedAt descending
select x).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
"Repository"属性是DbContext的后代.
这有点复杂,因为EF无法在对象上使用我的辅助方法,所以我直接在查询中指定逻辑.
那么,有什么方法可以转储由LINQ查询生成的SQL(例如,我的log4net存储库)?
传统上我总是手工编写我的sql脚本,所以它们很好而且干净(我不是生成者的粉丝)并且发布到发布版本,我提供了一个全新的安装脚本和来自之前版本的迁移脚本表,改变现有的表等.这都非常标准.
我没有太多时间来使用EF 4代码,但如果它在生产环境中实际可行,我很有兴趣使用它.
假设你有一个代码优先的方法,如果一个数据库不存在,将自动创建一个数据库.如果您发布具有架构/模型更改的软件的新版本会发生什么.EF是否足够智能更新数据库模式以匹配更新的EF模型?
脚本
代码首先仅对初始部署有用,还是足够聪明以更新现有数据库版本以便像这样发布?
asp.net-mvc entity-framework entity-framework-4 ef4-code-only
我想使用SQL Server xml类型作为实体类的列类型.
根据这个线程,可以将这样的列映射到字符串类型:
public class XmlEntity
{
public int Id { get; set; }
[Column(TypeName="xml")]
public string XmlValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该定义在数据库中正确生成了该表.也可以创建新的XmlEntity对象.
但后来我尝试从数据库中获取一些实体:
var entity = db.XmlEntities.Where(e => e.Id == 1).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
发生错误:
模型生成过程中检测到一个或多个验证错误 System.Data.Edm.EdmEntityType:的EntityType" 的XElement "没有定义键.定义此EntityType的键.
entity-framework entity-framework-4 xml-column ef4-code-only ef-code-first
我有一个表,在具有Ordinal列的表上具有唯一索引.例如,表格将包含以下列:
TableId,ID1,ID2,Ordinal
唯一索引跨越ID1,ID2,Ordinal列.
我遇到的问题是,当从数据库中删除记录时,我会重新排序序数,以便它们再次顺序.我的删除功能如下所示:
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
Run Code Online (Sandbox Code Playgroud)
问题在于,当我调用Context.SaveChanges()时,它会打破唯一索引,因为它似乎以不同于传递的顺序执行语句.例如,发生以下情况:
代替:
这是EF的正确行为吗?如果是,是否有一种方法可以覆盖此行为以强制执行顺序?
如果我没有正确解释,请告诉我...
使用codefirst EF4进行数据库重构的最佳实践是什么?
我很想知道当RecreateDatabaseIfModelChanges选项不可行时人们如何更改类和数据库.需要进行数据迁移.
目前微软有一个解决方案,首先使用模型:
有没有人有一个很好的代码策略?
ef4-code-only ×10
c# ×3
.net ×2
code-first ×2
asp.net-mvc ×1
char ×1
dbcontext ×1
profiling ×1
schema ×1
sql ×1
xml-column ×1