Tag: cascading deletes

entity framework一到零或一个没有导航属性的关系

我试图删除由于FK约束导致的记录时遇到问题。 因此,我回到了绘图板,并试图说明这种关系应该如何运作。 这是我的代码第一类: public class MemberDataSet { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public int? DeferredDataId { get; set; } [ForeignKey(“DeferredDataId”)] public virtual DeferredData DeferredData { get; set; } } public class DeferredData { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } //other properties } 我想要实现的是MemberDataSet有零个或一个DeferredData。 我可以从MemberDataSet访问DeferredData,但DeferredData不需要导航属性返回到MemberDataSet。 DeferredData应严格要求MemberDataSet。 因此,在理想的世界中,删除MemberDataSet将删除DeferredData(如果已分配)。 在我看来,我想要指明的是: modelBuilder.Entity().HasOptional(d […]

C# – 预测文件夹删除时的文件系统事件

这是一个关于实现这一目标的最佳实践的问题。 我有一个FileSystemWatcher ,它应该告诉我用户对文件和文件夹的更改。 还观察了细分市场。 在同一目录中,我的程序有时也会发生变化。 我不希望FileSystemWatcher检测这些程序更改的事件。 我的第一个实现是一个列表,我可以添加预期的事件。 当我收到文件系统事件时,我检查列表并忽略它,如果它在那里。 这听起来不太健壮,但似乎有效。 现在我发现了真正的问题: D:由FileSystemWatcher监视。 我有两个这样的文件夹:D:\ folder1 \ folder2 现在我想用我的应用程序删除folder1(其中包含folder2)。 所以我把D:\ folder1放在我的删除列表中。 然后我调用Directory.Delete(@”D:\folder1″, true) 。 现在我注意到在exception中无法删除folder1(为什么有)。 我从列表中删除了删除条目,但是folder2已经被删除了,我得到了他的FileSystemEvent。 所以我得到了D:\ folder1 \ folder2的FileSystem事件。 我的程序现在认为用户已经删除了这个文件夹并且做错了。 我现在有一些想法: 1.)通过删除每个文件和每个文件夹来递归删除文件夹。 有了这个,我得到每个子文件夹并提交一个自己的列表条目。 我已经实现了它,但它非常非常慢。 2.)也许有更好的方法在FileSystemWatcher使用聪明的filter使我的列表过时了? 3.)如果可以删除所有内容,也许只能删除目录树。 所以,如果它失败了,我仍然拥有一切,如果不是,一切都被删除。 这对我来说似乎是最优雅的解决方案,但不知道这是否可行? 4.)是否可以通过我的软件专门锁定所有文件和文件夹? 如果这样就可以了,应该可以用一个删除命令删除所有内容,或者像这样删除? 我也愿意接受其他解决方案。 编辑1以使其更清晰: 我只想“看到”文件夹上的用户操作。 如果我在这里操作我的程序中的东西,我不想看到这个事件。 通过我的实现,如果文件夹被锁定且无法删除,我将获取子文件夹的事件。 用英语解释并不容易,因为我不是英语母语者;)。 编辑2: 5.)也许可以在FileSystemWatcher过滤定义过程中的所有事件?

EF4.1代码优先:如何在依赖实体中禁用没有导航属性的关系的删除级联

假设我有这两个非常基本的实体: public class ParentEntity { public int Id; public virtual ICollection Childrens; } public class ChildEntity { public int Id; public int ParentEntityId; // Foreign Key public virtual ParentEntity parent; // [NOTWANTED] } 出于某些原因,我不希望ChildEntity将引用保留回其父级。 我只是希望它保留ParentEntity id,但仅此而已。 到目前为止,没问题,我只是删除[NOTWANTED]行,一切都按预期工作。 我的问题是:如何在特定情况下禁用级联删除? 如果我仍然拥有父导航属性,那将很容易: modelBuilder.Entity() .HasRequired(c => c.parent) .WithMany(p => p.Childrens) .WillCascadeOndelete(false) 但是如果没有导航属性,我根本不知道如何在删除时禁用级联(当然不是全局禁用它,也不是每个表禁用它,而只是为了关系)。 我现在所做的是将外键设置为可以为空的int,以便在删除时禁用级联,但这并不漂亮: public int? ParentEntityId; // Foreign Key […]

删除级联的entity framework

我在删除Entity Framework 4.1中的相关行时遇到问题。 我有关系表 书1 * BookFormats 我已经设置了删除级联: ALTER TABLE [dbo].[BookFormats] WITH CHECK ADD CONSTRAINT [FK_BookFormats_Book] FOREIGN KEY([BookID]) REFERENCES [dbo].[Book] ([BookID]) on delete cascade EDMX属性 然后,我想删除与我的Book对象相关的所有BokFormats项: var originalBook = m.db.Book.First(x => x.BookID == bookId); originalBook.BookFormats.Clear(); m.db.SaveChanges(); 但是,我得到错误: 操作失败:无法更改关系,因为一个或多个外键属性不可为空。 当对关系进行更改时,相关的外键属性将设置为空值。 如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。 我没有关于如何删除这些对象的想法。 有任何想法吗?

使用Fluent API进行级联删除

我有两个实体。 Profile和ProfileImages 。 获取Profile我想通过Profile删除ProfileImages而不删除对Profile的引用(将其设置为null )。 如何通过流畅的API和级联删除来完成? 我是否设置了HasRequired属性或CascadeDelete属性? public class Profile { //other code here for entity public virtual ICollection ProfileImages { get; set; } } public class ProfileImage { // other code here left out [Index] public string ProfileRefId { get; set; } [ForeignKey(“ProfileRefId”)] public virtual Profile Profile { get; set; } }