没有Detach(object entity)
上DbContext
.
我是否能够首先在EF代码上分离对象?
我正在使用Entity Framework 5 code first
和ASP.NET MVC 3
.
我正在努力让一个子对象的子对象填充.以下是我的课程..
申请类;
public class Application
{
// Partial list of properties
public virtual ICollection<Child> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
儿童班:
public class Child
{
// Partial list of properties
public int ChildRelationshipTypeId { get; set; }
public virtual ChildRelationshipType ChildRelationshipType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ChildRelationshipType类:
public class ChildRelationshipType
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
存储库中GetAll方法的一部分,用于返回所有应用程序:
return DatabaseContext.Applications …
Run Code Online (Sandbox Code Playgroud) entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5
我想加入三张桌子,但我无法理解这个方法......
我完成了加入2个表
var entryPoint = dbContext.tbl_EntryPoint
.Join(dbContext.tbl_Entry,
c => c.EID,
cm => cm.EID,
(c, cm) => new
{
UID = cm.OwnerUID,
TID = cm.TID,
EID = c.EID,
}).
Where(a => a.UID == user.UID).Take(10);
Run Code Online (Sandbox Code Playgroud)
我想在TID PK中包含tbl_Title表并获取Title字段.
非常感谢
c# entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5
我试图找出如何使用EF代码First 4.1 RC获得复合键.
目前,我正在使用[Key] Data Annotation,但我无法指定多个键.
如何指定复合键?
这是我的例子:
public class ActivityType
{
[Key]
public int ActivityID { get; set; }
[Required(ErrorMessage = "A ActivityName is required")]
[StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
public string ActivityName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要"ActivityName"也是一个关键.当然,我可以围绕这个编码,但那不是很好的数据库设计.
我一直在寻找有关如何使用代码首先EF 4.1声明外键关系和其他约束的资源,而没有太多运气.基本上我是在代码中构建数据模型并使用MVC3来查询该模型.一切都通过MVC工作,这是伟大的(对微软的赞誉!)但现在我希望它不工作,因为我需要有数据模型约束.
例如,我有一个Order对象,它有很多属性是外部对象(表).现在我可以创建一个没有问题的订单,但是无法添加外键或外部对象.MVC3设置这没问题.
我意识到我可以在保存之前在控制器类中自己添加对象,但是如果没有满足约束关系,我希望调用DbContext.SaveChanges()失败.
新的消息
所以,具体来说,当我尝试保存Order对象而不指定客户对象时,我希望发生异常.如果我只是编写大多数Code First EF文档中描述的对象,这似乎不是行为.
最新代码:
public class Order
{
public int Id { get; set; }
[ForeignKey( "Parent" )]
public Patient Patient { get; set; }
[ForeignKey("CertificationPeriod")]
public CertificationPeriod CertificationPeriod { get; set; }
[ForeignKey("Agency")]
public Agency Agency { get; set; }
[ForeignKey("Diagnosis")]
public Diagnosis PrimaryDiagnosis { get; set; }
[ForeignKey("OrderApprovalStatus")]
public OrderApprovalStatus ApprovalStatus { get; set; }
[ForeignKey("User")]
public User User { get; set; }
[ForeignKey("User")]
public User Submitter { get; set; }
public DateTime …
Run Code Online (Sandbox Code Playgroud) 我有一个User
< Country
模特.用户属于某个国家/地区,但可能不属于任何(空外键).
我该如何设置?当我尝试插入具有空国家/地区的用户时,它告诉我它不能为空.
模型如下:
public class User{
public int CountryId { get; set; }
public Country Country { get; set; }
}
public class Country{
public List<User> Users {get; set;}
public int CountryId {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
错误: A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Country_Users ]"}
mapping entity-framework foreign-key-relationship ef-code-first entity-framework-4.1
基本上,我在一个事务中插入35000个对象:
using(var uow = new MyContext()){
for(int i = 1; i < 35000; i++) {
var o = new MyObject()...;
uow.MySet.Add(o);
}
uow.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
这需要永远!如果我使用底层ObjectContex
t(通过使用IObjectAdapter
),它仍然很慢但需要大约20秒.它似乎DbSet<>
正在进行一些线性搜索,这需要花费大量时间......
其他人看到这个问题?
我正在使用Entity Framework Code First方法来创建我的数据库表.以下代码DATETIME
在数据库中创建一个列,但我想创建一个DATE
列.
[DataType(DataType.Date)]
[DisplayFormatAttribute(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime ReportDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
如何DATE
在创建表时创建类型列?
有没有办法装饰你的POCO类来自动加载子实体而不必Include()
每次加载时都使用它们?
假设我有一辆Class Car,车轮,门,发动机,保险杠,Windows,排气等的复杂类型属性.在我的应用程序中,我需要从我的DbContext 20个不同的地方加载我的汽车,不同的查询,等等.不希望每次我想加载我的汽车时都要指定我想要包含所有属性.
我想说
List<Car> cars = db.Car
.Where(x => c.Make == "Ford").ToList();
//NOT .Include(x => x.Wheels).Include(x => x.Doors).Include(x => x.Engine).Include(x => x.Bumper).Include(x => x.Windows)
foreach(Car car in cars)
{
//I don't want a null reference here.
String myString = car.**Bumper**.Title;
}
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式装饰我的POCO类或我的OnModelCreating()
或在EF中设置一个配置,它会告诉它在我装车时加载我汽车的所有部件吗?我想热切地这样做,所以我的理解是让我的导航属性变得虚拟.我知道NHibernate支持类似的功能.
只是想知道我是否遗漏了什么.提前致谢!
干杯,
弥敦道
我喜欢下面的解决方案,但我想知道我是否可以嵌套对扩展方法的调用.例如,假设我与Engine有类似的情况,它有很多部分,我不希望包含在任何地方.我可以这样做吗?(我还没有找到一种工作方式).这样,如果以后我发现Engine需要FuelInjectors,我只能在BuildEngine中添加它,而不必在BuildCar中添加它.此外,如果我可以嵌套调用,如何将调用嵌套到集合中?想从我的BuildCar()中为每个轮子调用BuildWheel()?
public static IQueryable<Car> BuildCar(this IQueryable<Car> query) {
return query.Include(x => x.Wheels).BuildWheel()
.Include(x => x.Doors)
.Include(x => x.Engine).BuildEngine()
.Include(x => x.Bumper)
.Include(x => x.Windows);
}
public …
Run Code Online (Sandbox Code Playgroud) 如何构建一个查询随机行的查询?
如果我在SQL中编写它,那么我会在newid()上输入一个命令并从顶部删除n行.无论如何要先在EF代码中执行此操作?
我尝试创建一个使用newid()并使用DbSet.SqlQuery()执行它的查询.虽然它有效,但它不是最干净的解决方案.
此外,尝试检索所有行并通过新guid对它们进行排序.尽管行数相当小,但它仍然不是一个好的解决方案.
有任何想法吗?