我有一个父/子层次结构,我想要在DbContext中插入一个新的父级,并让它自动地持久化子对象。
每次我在SaveChanges on DbContext EF上抛出一个异常
检测到冲突的更改。当尝试使用相同的键插入多个实体时,可能会发生这种情况。
我理解这个错误,因为子对象没有标识列。
模型如下:
public class Parent
{
public int ParentId { get; set; }
public string Name { get; set; }
public ICollection<Child> Children
我一直在摆弄EF Core 3.1,试图在两个类之间建立关系。诀窍是一个类上的组合键,另一个类只通过一个部分与之相关。
请考虑以下几点:
public class A
{
public string Foo { get; set; }
public long Id { get; set; }
public IEnumerable<B> B { get; set; }
}
public class B
{
[Key]
public int Id { get; set; }
public string Bar { get; set;
我有点困惑于EF asp.net mvc中的代码第一逻辑。asp.net页面上的例子是,对于这个数据库结构
public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enr
我有过敏症的产品。但是,当我尝试在EF核心中对此进行建模时,我无法实现一对多关系。EF创建了一个新的领域,ProductId在过敏症中,因此只有1种产品可以有1种过敏症。
这是我的代码:
public class Product
{
[Key]
public int ProductId { get; set; }
public string Name{ get; set; }
public byte[] ImageData { get; set; }
public virtual ICollectio
我知道这个问题和一些类似,但是我的设置和那些不一样。下面的类在EF中的正确配置是什么?
这里的问题是Team有一个可选的DivisionParticipant,但是DivisionParticipant也有一个可选的Team。
public class Team
{
[Key]
public int Id {get;set;}
public DivisionParticipant DivisionParticipant {get;set;}
}
public class DivisionParticipant
{
[Key]
public
任何人都知道如何使用EF Code First Fluent API实现此场景:
public class Referancial
{
// Identity
public int KeyID { get; set; }
public string Code { get; set; }
public virtual ICollection<Translation> Translations { get; set; }
}
public class Translation
{
// refer to Referancial.KeyID
在EF6中,我们有两种方法来声明两个表之间的关系:
注释属性
Fluent API
今天(偶然)我去掉了两张桌子之间的一段关系,一切都很正常。我很惊讶,因为EF不可能知道这两个表是如何连接的。
表如下所示:
[Table("item")]
public class Item
{
public Item()
{
ItemNotes = new HashSet<ItemNote>();
}
[Key]
[Column("itemID", TypeName = "int"
我用DB first方法在.NET核心实体框架中构建了一个数据库模型。我的数据库中有几个多到多的关系,它们都是用一个连接表表示的。
就像这样:
public partial class Test1
{
public Test1()
{
Test1_Test2= new HashSet<Test1_Test2>();
}
public int Id { get; set; }
..
public virtual ICollection<Test1_Test2> Test1_Test2{ get; set;
我有下面的模型。
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
我想在EF中创建一对一的关系,其中Foreign可以是null (因此,它可以被称为0..1到-0..1)
public class ProductInstance
{
public int Id { get; set; }
public int SaleId { get; set; }
public Sale Sale { get; set; }
}
public class Sale
{
public int Id { get; set; }
public ProductInstance ProductInstance { get; set;
我有两个对象-父母和孩子在关系中多对多,问题是,一个父母可以有两个相同的孩子,但EF节省这种关系只有一次。
我只找到了两个可行的解决方案:
将count列添加到表中并手动填充
不是用多对多,而是把它分成一对多和多对一,但我不喜欢这个解决方案,因为我希望有一些更简单的解决方案。
你能帮帮我吗?
编辑:连接表示例:
1-1
1-1
1-2
1-3
2-3
代码:模型
public class Item
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public i
我试图使用主键和两个表的唯一键(而不是主键)在两个表之间创建一对一的关系。
以下是我想做的工作。
// The principal end
public class A
{
// The primary Key
public int AId { get; set; }
// The navigation property
public virtual B B { get; set; }
}
// The dependent end
public class B
{
// The primary Key
public int BId { get
在EF6中,我首先使用代码连接多对多关系,然后在此基础上创建传递关联时遇到了问题。
有三个类: Person、Tag和Passing。
每个人都有一个可选的围巾。
每个标签都有一个可选的Bib,而不是唯一的。
每次传递都有一个必需的TagId。
我想通过获取具有相同Bib的所有标签,然后获取与每个标签相关联的所有通道,来访问链接到一个人的所有通道。
我曾尝试在我的DBContext类中使用DBModelBuilder,但无法使其正常工作,而且EF6似乎无论如何都会尝试生成一个中间表,这似乎是不必要的。
public class Person
{
[Key]
public int
我正在编写一些通过EF4.3使用单个表继承的代码。
有一个名为User的实体和另一个名为Admin的实体。管理员从用户继承。
用户类
public class User
{
public int Id {get;set;}
public string Username {get;set;}
}
管理类
public class Admin : User { }
EF生成带有Discriminator列的数据库表。当添加Admin记录时,Discriminator="Admin"和用户记录将具有Discriminator="User"。
我的问题是
我有一个问题,我必须创建一个模型,其中我们有两个实体可以连接在一起,但也可以作为独立的实体存在。
目前的模型如下:
public class Authorisation
{
public int AuthorisationID { get; set; }
public virtual Change Change { get; set; }
}
public class Change
{
public int ChangeID{ get; set; }
public virtual Authorisation Authorisation { get;
我将尽可能简单地解释我目前面临的问题。我目前正在做的项目需要分析一些财务数据。为了方便起见,这些数据应该存储在数据库中,所以我的任务是创建一个数据库模型。虽然到目前为止还不需要数据库,但应用程序本身已经开发了很多年,并且已经定义了所有的数据类型和类,所以我的任务是将数据库模型与应用程序使用的类进行匹配。下面是应用程序用来处理数据的类组合的简化分类。
首先,有一个抽象条目类,所有其他财务数据条目都继承自这个抽象条目类:
abstract class Entry
{
public Guid ID { get; set; }
public string Name { get; set
我试图使用EFCore2.0在两个类之间建立多到多个关系,只需在每个类中都有一个ICollection。
这似乎在EF 6 ()中工作得很好。为什么这在EF核心中不起作用?
public class ClassA {
[...]
public ICollection<ClassB> Bs { get; set; }
}
public class ClassB {
[...]
public ICollection<ClassA> As { get; set; }
}
我在EF核心()中找到了一种方法来完成这个任务,但是这看起来比它所需要的
假设我们有 和 类:在Play和Player两个表之间有非常好的一对多关系: public class Airport
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IList Runways { get; set; }
}
public class Runway
{
public int Id { get; set; }
public string Name { get; set; }
//public int Airpo
我有以下实体:
public class User
{
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
public virtual ICollection<User> Users { get; set; }
}
以及MyContext.OnModelCreating中的以下代码
mb.Conventions.Remove<OneToManyCascadeDeleteConvention>();
mb.Entity<T>().T
我正在与一个问题作斗争,从我所看到的情况来看,提出的解决方案都不起作用。
基本上我有两个类:
public class Role
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class ActionType
{
public int ID { get; set;}
public string Name { get; set; }
public st
我有两个实体:
class User
{
public Guid UserId { get; set; }
}
class ActionLog
{
public Guid ActionLogId { get; set; }
public Guid UserId { get; set; }
public User User {get; set;}
}
当我将这些添加到EF核心数据上下文中时,ActionLog.UserId上的约定会生成一个外键,但我只想记录没有关系的UserId。我不想要级联删除和密钥检查。我怎么能取消那个惯例?