我正在使用Entity Framework CTP5(代码优先),我有两个类:
public class Order
{
public int Id {get;set;}
public decimal SomeOtherProperty1 {get;set;}
//navigation property
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和
public class OrderLine
{
public int Id {get;set;}
public int OrderId {get;set;}
public decimal SomeOtherProperty2 {get;set;}
//navigation property
public virtual Order Order { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有OrderLine类的以下配置类:
public partial class OrderLineMap : EntityTypeConfiguration<OrderLine>
{
public OrderLineMap()
{
this.HasKey(ol=> ol.Id);
this.HasRequired(ol=> ol.Order)
.WithMany(o => o.OrderLines)
.HasForeignKey(ol=> ol.OrderId);
}
}
Run Code Online (Sandbox Code Playgroud)
目前,如果您创建"OrderLine"实例,则必须指定"订单"实例.
问题:如何使ol.Order属性可选(在某些情况下为null)?可能吗?
我有两个问题:
public class Address
{
public int Id { get; set; }
public string FirstName { get; set;
public string LastName { get; set; }
}
public partial class Customer
{
public int Id { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public virtual Address BillingAddress { get; set; }
public virtual Address ShippingAddress { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
下面是映射类:
public partial class AddressMap : EntityTypeConfiguration<Address>
{
public AddressMap()
{ …Run Code Online (Sandbox Code Playgroud) 好的,所以我刚刚通过NuGet升级到EF Code First 4.1,现在我的JobSiteContext.cs类中出现了以下构建错误:
"当前上下文中不存在名称'DbDatabase'"
这是我的代码:
public class JobSiteContext : DbContext
{
public DbSet<JobSite.Models.Job> Jobs { get; set; }
public DbSet<JobSite.Models.Location> Locations { get; set; }
public DbSet<JobSite.Models.Profile> Profiles { get; set; }
public JobSiteContext()
{
// Instructions:
// * You can add custom code to this file. Changes will *not* be lost when you re-run the scaffolder.
// * If you want to regenerate the file totally, delete it and then re-run the scaffolder.
// * You can delete …Run Code Online (Sandbox Code Playgroud) 我首先使用EF6代码来创建我的数据库.我理解语法,DbContext和模型构建器.我使用LINQ进行了几次详尽的查询,一切正常.
但现在我需要做一些使用linq在一个查询中无法完成的事情.我需要使用存储过程执行Merge语句.
我已经看到了几个关于如何创建存储过程的问题,例如: 使用Entity Framework Code First创建存储过程?
大多数答案都在谈论为DbMigrations创建派生类并重写Up()函数.我理解我应该在Up函数中写什么以确保创建存储过程.
但是,在数据库创建过程中,我应该怎样做才能调用Up函数?
我应该在DbContext.OnModelCreating中做些什么吗?
我认为我不应该实例化DbMigrations的子类并调用Up().
上面提到的链接是在谈论"打开包管理器控件".那是什么?或者,从旧版本迁移到较新版本时,您是否真的使用此方法?
我正在学习C#,对于网络扫描项目,我想将IP地址保存为我的SQL Server的二进制文件,因为这似乎是"最佳"解决方案.
但由于我很新,我对如何告诉EF6这样做非常困惑.
我想IPAddress在我的代码中使用变量类型,但EF会将其保存为BIGINT我的数据库(使用代码优先).
我想我可以使它成为一个byte []并使用getter和setter来将二进制转换为该IPAddress类型?
或者我可以告诉它使用BINARY数据注释吗?我还需要手动进行转换吗?
有人可以为我澄清一下吗?
因为我会将大量IP保存到数据库中,所以我希望以尽可能最好的方式保存它们.
非常感谢!
c# sql-server entity-framework code-first entity-framework-6
我的实体名称是"联系人",我的表名是"联系人".但是,默认的复数支持是使EF4查找名为"Contacts"的表.有人知道如何关闭多元化支持吗?
这篇文章有关于多元化支持的一些细节.但仍然没有给我一个答案.
我在这篇文章中看到了以下文字.首先,我不知道我需要哪个物理.tt文件进行此更改.此外,我希望仅为一个应用程序而不是所有应用程序关闭此功能.
T4 Toolbox中的代码生成器默认情况下在Visual Studio 2010中打开了复数.如果您需要生成DAL而不进行复数化,可能出于兼容性原因,您可以通过在.tt文件中添加以下行来关闭此选项调用generator.Run()方法.
C#
generator.Pluralize = false;VB
generator.Pluralize = False
*****UPDATE*****
以下是我使用的代码,我得到一个错误如下: -
联系
public class Contact
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public DateTime AddDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
语境: -
public class AddressBook : DbContext
{
public DbSet<Contact> Contact …Run Code Online (Sandbox Code Playgroud) 我正在开发一个ASP.NET MVC应用程序,设计域模型,使用(测试)新的EF Code First功能.
我有一个活动实体可能有也可能没有截止日期,接近它的最佳方法是什么?
1物业:
public DateTime? Deadline {get; set;}
and check vs null before using
Run Code Online (Sandbox Code Playgroud)
要么
2个属性:
public DateTime Deadline {get; set;}
public bool HasDeadline {get; set;}
Run Code Online (Sandbox Code Playgroud)
起初我想到了第一个选项,但后来我开始考虑可能第二个选项对DB来说会更好......
这有什么最好的做法吗?
在Fluent NHibernate中,您可以为映射设置级联设置,例如
public class StoreMap : ClassMap<Store>
{
public StoreMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Staff)
.Inverse()
.Cascade.None();
HasManyToMany(x => x.Products)
.Cascade.All()
.Table("StoreProduct");
}
}
Run Code Online (Sandbox Code Playgroud)
如何在实体框架"Code First"中完成这项工作?
.net entity-framework code-first entity-framework-4 entity-framework-ctp5
持久性无知是指能够允许开发人员以完全独立于基础结构服务(在本例中为实体框架)的基本要求和假设的方式编写和测试域对象.此类要求/假设通常包括:
- 需要实现特定的接口(例如,IPOCO)
- 从基类继承
- 提供特定的构造函数
- 对象实例化/构造要求 - 例如使用特定工厂**
- 需要元数据或映射类或属性属性
- 需要使用特定的关系机制
这相当于能够使用普通旧CLR对象(POCO),以便开发人员可以创建其域对象,而不受框架强加的所有假设和要求的影响.使用此方法,一旦域对象准备满意,开发人员就可以将这些类与实体框架一起使用,以便进行关系数据库访问和持久性.
截至目前(CTP5),有没有办法使用参数化构造函数重建poco?如果没有,很难看出实体框架如何被称为提供持久性无知.
domain-driven-design entity-framework poco code-first entity-framework-4
假设以下表结构:
表:
**Tasks**
taskID int PK
taskName varchar
**Resources**
resourceID int PK
resourceName varchar
**Assignments**
assignmentID int PK
taskID int FK
resourceID int FK
Run Code Online (Sandbox Code Playgroud)
赋值表将任务与分配给它的资源相关联.是否可以使用模型构建器映射此结构,以便我不必创建Assignment poco类 - 隐藏一些基础数据结构?
IE:
public class Task
{
public int taskID { get; set; }
public string taskName { get; set; }
public virtual ICollection<Resource> resourceItems { get; set; }
}
public class Resource
{
public int resourceID { get; set; }
public string resourceName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何在不创建赋值poco类的情况下使用模型构建器将任务映射到资源?
entity-framework data-modeling code-first ef-code-first entity-framework-ctp5