我是MVC/EF新手.
我在我的数据库中有几个不同的表:说柠檬,糖和水.
我应该创建三个单独的模型:柠檬,糖和水,还是制作一个定义三个不同类的大型模型(有三个独立的DBContext类?)然后构建每个模型?
现在我正在制作单独的模型,但看起来我必须最终建立三个独立的数据库,这似乎有点过分.
电影示例只有一个表,所以它不能很好地回答我的问题.
如果我使用app.conf文件来定义SQL CE 4.0 DB的连接,我的应用程序工作正常.
如何在代码中没有app.conf来"初始化连接"(希望这是正确的术语......)
这是我到目前为止(不多):
SqlCeConnectionStringBuilder builder = new SqlCeConnectionStringBuilder();
builder["Data Source"] = "db.sdf";
//What is missing here?
PartyDB DB = new PartyDB();
var dinners = from d in DB.Dinners
select d;
Run Code Online (Sandbox Code Playgroud)
任何提示都受到高度赞赏.
我有代码第一个实现流动的层次结构,
BaseContact{
Public int Id{get;set;}
public string Name{get;set;}
//..
}
Person:BaseContact{
public string Designation{get;set;}
//..
}
Company:BaseContact{
public int NumOfEmployees{get;set;}
//..
}
Run Code Online (Sandbox Code Playgroud)
我想通过仅使用Id值来识别人或公司?目前我正在使用反思来确定它是个人还是公司.有没有其他方法来识别它而不做太多?
inheritance entity-framework ef-code-first entity-framework-4.1
我正在尝试与供应商,经销商和零售商定义供应链.此实体由Contract类绑定,该类还定义ProductLine及其将使用的产品.对于给定的ProductLine,供应商(该ProductLine的唯一所有者)与经销商之间将签订合同,然后是该经销商与零售商之间的另一份合同.
问题是两个经销商之间也有合同,所以我尝试创建两个接口(ISeller和IBuyer).供应商实施ISeller,零售商实施IBuyer和Dealer实现两个接口:
public class Supplier : ISeller
{
public int Id { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
}
public class Dealer : ISeller, IBuyer
{
public int Id { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
}
public class Retailer : IBuyer
{
public int Id { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
合同然后将ISeller绑定到IBuyer,如下所示:
public class Contract
{
public int Id { get; set; …Run Code Online (Sandbox Code Playgroud) 有没有人尝试过映射继承的属性?因为我很高兴听到它正常工作并且我在某处犯了错误,因为我收到以下错误:
"属性'UserName'不是'Advertiser'类型的声明属性.通过使用Ignore方法或NotMappedAttribute数据注释验证该属性是否未从模型中显式排除.请确保它是有效的原始属性."
我的模型看起来像这样:
abstract class Entity { public int Id {get; set; }}
abstract class User : Entity { public string UserName {get; set;} }
sealed class Advertiser : User { }
Run Code Online (Sandbox Code Playgroud)
我的AdvertisementConfiguration类看起来像这样:
class AdvertiserConfiguration : EntityTypeConfiguration<Advertiser>
{
public AdvertiserConfiguration()
{
// the following line indirectly causes an InvalidOperationException:
Property( x => x.UserName ).HasMaxLength(50);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我更改广告商类以使其不从User继承(并将UserName属性拉下来),那么一切正常.
entity-framework invalidoperationexception code-first entity-framework-4 ef-code-first
我首先使用EF代码设置以下域模型:
public class User
{
public virtual int Id { get; set; }
public virtual string Email { get; set; }
public virtual ICollection<UserProcessed> UsersProcessed { get; set; }
}
public class UserProcessed
{
public virtual int Id { get; set; }
public virtual DateTime CreatedAt { get; set; }
public virtual User user { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图将以下T-SQL查询转换为LINQ,我遇到了一些困难:
SELECT u.Email
FROM Users u LEFT JOIN UsersProcessed up ON u.Id = up.UserId
WHERE up.UserId IS NULL
AND u.CreatedAt BETWEEN …Run Code Online (Sandbox Code Playgroud) 使用传统的Entity Framework并使用ESQL查询时,只能使用OFTYPE来返回基类型.
请参阅:http: //msdn.microsoft.com/en-us/library/bb399295.aspx
在实体框架代码首先,我有继承设置,其中B是A的子类型.执行MyContext.Set<A>().OfType<A>()仍然返回类型B的元素.理想情况下,我想调用MyContext.Set<A>().OfOnlyType<A>()它,它将转换为与使用ESQL的OFTYPE时相同的方式.
我还发现我可以is在where语句中使用运算符,但同样会返回A和B实体.
如何编写一个只过滤到A类元素的linq表达式?
我清楚地知道我可以自定义同步模型和DB模式过程的行为.我正在DropCreateDatabaseIfModelChanges<>上课这样做.
假设我有一个工作项目和网站,DB并填写数据.一切都很好.
有一天,我决定需要改变一些功能.更改将影响我的模型的属性(可以重命名/删除/添加,一些模型将是新的,一些模型将被删除).
我的问题:当我检查所有更改时,我已部署网站上现有数据会发生什么?
我会失去它吗?如果是这样,我该如何避免呢?
我正在使用ObjectContext与其他存储库共享的存储库实现.存储库包含一个ObjectSet实体.我正在通过Add()方法添加新实体ObjectSet.在导入数据时,我想查询这些新添加的对象以防止重复数据.
在ObjectContext实现工作模式的一个单元.在导入过程结束时,我想调用commit方法来调用context.SaveChange()持久化数据.
但是,在我打电话之前,我找不到一种简单的方法来查询新添加的实体SaveChanges().你们怎么处理这些问题?
entity-framework unit-of-work repository-pattern ef-code-first entity-framework-4.1
我有以下型号,但我一直收到错误:
未处理的异常:System.InvalidOperationException:发生关系乘法约束违规:EntityReference只能有一个关联对象,但查询返回了多个相关对象.这是一个无法恢复的错误.
public class Tournament
{
public long TournamentId { get; set; }
public string Title { get; set; }
public virtual User CreatedBy { get; set; }
}
public class User
{
public int UserId { get; set; }
}
modelBuilder.Entity<Tournament>()
.HasRequired(t => t.CreatedBy)
.WithOptional()
.Map(c => c.MapKey("CreatedById")); // correct column name
Run Code Online (Sandbox Code Playgroud) ef-code-first ×10
c# ×3
code-first ×2
.net ×1
c#-4.0 ×1
database ×1
inheritance ×1
linq ×1
unit-of-work ×1