我在尝试将我的EF 4.1 Code First模型映射到数据库时遇到了麻烦.当数据库完全匹配代码时,一切正常,但当我尝试映射列名称不同时,我遇到了问题.
我正在学习一个必须使用其中一个CTP构建的教程,因为有些方法缺失/不同.
我的模型看起来像:
public class Dinner
{
public int DinnerID { get; set; }
public string HostedBy { get; set; }
public DateTime EventDate { get; set; }
public string Title { get; set; }
public string Address { get; set; }
}
public class NerdDinners : DbContext
{
public DbSet<Dinner> Dinners { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// THIS IS WHAT I TRIED BUT IT IS FAILING
modelBuilder.Entity<Dinner>().Map(mc =>
{
mc.Properties(c => …Run Code Online (Sandbox Code Playgroud) 我正在使用Entity Framework和Entity Framework迁移来实现使用代码优先和自动迁移的解决方案.
它过去工作得很好但突然停止检测我对POCO的更新.现在,当我添加一个新属性(非常简单的属性,如年龄或电子邮件)并执行时Update-Database,没有任何反应,它给了我这个:
指定'-Verbose'标志以查看迁移期间正在执行的SQL命令.
找到0个待定的显式迁移:[].
添加种子数据(如果在"迁移设置"类中重写了种子方法).
什么都没有更新!
有谁知道为什么会这样?
在实体框架代码中,当我声明实体时,我必须使用DbSet <>类型的属性.例如:
public DbSet<Product> Products { get; set; }
public DbSet<Customer> Customers { get; set; }
Run Code Online (Sandbox Code Playgroud)
最近我遇到了声称为虚拟的DbSet <>.
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<Customer> Customers { get; set; }
Run Code Online (Sandbox Code Playgroud)
有什么不同?启用了哪些EF功能?
我的MVC应用程序中有两个实体,我使用Entity Framework 6 Code First方法填充数据库.学生实体中有两个城市ID; 其中一个为BirthCity,另一个为WorkingCity.当我在上面定义外键时,在迁移后在Student表中创建一个名为City_ID的额外列.我有错误或如何定义这些FK?提前致谢.
学生:
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int BirthCityID { get; set; }
public int LivingCityID { get; set; }
[ForeignKey("BirthCityID")]
public virtual City BirthCity { get; set; }
[ForeignKey("LivingCityID")]
public virtual City LivingCity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
市:
public class City
{
public int ID { get; set; }
public string CityName …Run Code Online (Sandbox Code Playgroud) asp.net-mvc entity-framework foreign-keys foreign-key-relationship ef-code-first
我有两个POCO课程
public class Order
{
int id;
string code;
int? quotationId; //it is foreign key
public int Id{get;set;}
public string Code{get;set;}
public int? QuotationId{get;set;}
Quotation quotation;
public virtual Quotation Quotation { get; set; }
....
}
public class Quotation
{
int Id;
string Code;
public int Id{get;set;}
public string Code{get;set;}
Order order;
public virtual Order Order { get; set; }
....
}
Run Code Online (Sandbox Code Playgroud)
每个订单可以由一个或零引号组成,每个报价可能会导致一个订单,所以我有一个"一个或零"到"一个或零"关系,我怎么能在EF代码中首先通过流畅的API实现它?
c# entity-relationship entity-framework fluent ef-code-first
如何运行代码优先实体框架迁移而不更改数据模型中可能导致创建迁移的任何内容?我只想再次运行种子方法因为我添加了它.
我有以下实体DbContext:
public class A
{
public A()
{
Bs = new List<B>();
}
public ICollection<B> Bs { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
有时我想更新a图表:
var a = dbContext.As
.AsNoTracking()
.Include(x=>x.Bs)
.firstOrDefault();
var c = new C();
a.Bs.Add(c);
var d = new D();
var e1 = new E();
var e2 = new E();
d.Es.Add(e1); //<-- added new E
d.Es.Add(e2); //<-- added new E
a.Bs.Add(d);
Run Code Online (Sandbox Code Playgroud)
我想更新a其Bs(更新C,D,E使用过多)graphdiff:
dbContext.UpdateGraph(a,map=>map.OwnedCollection(x=>x.Bs));
Run Code Online (Sandbox Code Playgroud)
这更新 …
我有以下代码(数据库是SQL Server Compact 4.0):
Dim competitor=context.Competitors.Find(id)
Run Code Online (Sandbox Code Playgroud)
当我对此进行分析时,Find方法需要300 + ms才能从仅有60条记录的表中检索竞争对手.
当我将代码更改为:
Dim competitor=context.Competitors.SingleOrDefault(function(c) c.ID=id)
Run Code Online (Sandbox Code Playgroud)
然后在3毫秒内找到竞争对手.
竞争者类:
Public Class Competitor
Implements IEquatable(Of Competitor)
Public Sub New()
CompetitionSubscriptions = New List(Of CompetitionSubscription)
OpponentMeetings = New List(Of Meeting)
GUID = GUID.NewGuid
End Sub
Public Sub New(name As String)
Me.New()
Me.Name = name
End Sub
'ID'
Public Property ID As Long
Public Property GUID As Guid
'NATIVE PROPERTIES'
Public Property Name As String
'NAVIGATION PROPERTIES'
Public Overridable Property CompetitionSubscriptions As ICollection(Of CompetitionSubscription)
Public Overridable Property …Run Code Online (Sandbox Code Playgroud) entity-framework ef-code-first sql-server-ce-4 dbcontext dbset
我有例外
已检测到关系y的角色x的冲突变化.
每次我将我的实体添加到我的上下文中
Database.MyEntitys.Add(MyEntity);
Run Code Online (Sandbox Code Playgroud)
MyEntity类包含此属性:
public virtual ICollection<DetailInfo> Group { get; set; }
Run Code Online (Sandbox Code Playgroud)
DetailInfo类非常简单:
public class DetailInfo:BaseEntity {
public virtual Detail Detail { get; set; }
public decimal Total { get; set; }
public virtual MyEntity MyEntity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
DatabaseContext也很简单:
public class MyEntityConfiguration : EntityTypeConfiguration<MyEntity> {
public MyEntityConfiguration() {
HasMany(e => e.Group).WithRequired(s => s.MyEntity).WillCascadeOnDelete(true);
}
}
public class DetailInfoConfiguration : EntityTypeConfiguration<DetailInfo> {
public DetailInfoConfiguration() {
HasRequired(x => x.MyEntity).WithMany(s => s.Group);
HasRequired(x => x.Detail);
HasKey(s => s.ID);
ToTable("DetailInfo"); …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc entity-framework ef-code-first entity-framework-4.1
我正在使用Entity Framework Code First.我重写SaveChanges的DbContext,让我做一个"软删除":
if (item.State == EntityState.Deleted && typeof(ISoftDelete).IsAssignableFrom(type))
{
item.State = EntityState.Modified;
item.Entity.GetType().GetMethod("Delete")
.Invoke(item.Entity, null);
continue;
}
Run Code Online (Sandbox Code Playgroud)
这很好,所以对象知道如何将自己标记为软删除(在这种情况下它只是设置IsDeleted为true).
我的问题是我怎样才能使它在检索对象时忽略任何对象IsDeleted?所以,如果我说_db.Users.FirstOrDefault(UserId == id)如果该用户拥有IsDeleted == true它将忽略它.基本上我想过滤?
注意:我不想只是把&& IsDeleted == true
那就是为什么我用界面标记类,所以删除知道如何"正常工作",我想以某种方式修改检索,知道如何"正常工作"也基于那个界面存在.
ef-code-first ×10
entity-framework ×10
c# ×5
asp.net-mvc ×2
.net ×1
dbcontext ×1
dbset ×1
fluent ×1
foreign-keys ×1
graphdiff ×1
migration ×1