linq级联删除的方法是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"linq级联删除的方法是什么",在日常操作中,相信很多人在linq级联删除的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"linq级联删除的
千家信息网最后更新 2026年11月03日linq级联删除的方法是什么
这篇文章主要介绍"linq级联删除的方法是什么",在日常操作中,相信很多人在linq级联删除的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"linq级联删除的方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
级联删除(cascading deletes)从父表中删除外键时也会删除子表中的行。如果在一个表的主键列上删除了一些行,那么在启用级联删除的情况下,将在相关表的任何外键列上删除相同信息。
/// /// 级联删除(从父表中删除外键时也会删除子表中的行) /// /// /// /// public static void CascadingDeletes(T TEntity) where T : class // where T : INotifyPropertyChanging, INotifyPropertyChanged { var _type = TEntity.GetType(); var _prop = _type.GetProperties(); //查找是否有"AssociationAttribute"标记的属性(Linq中有"AssociationAttribute"标记的属性代表外表) var _assolist = _prop.Where( c => c.GetCustomAttributes(true).Any( a => ((Attribute)a).GetType().Name == "AssociationAttribute") & c.PropertyType.IsGenericType);//该属性必需是泛型 //其他表有外键关联的记录 if (_assolist.Count() > 0) { foreach (var _asso in _assolist) { var _items = _asso.GetValue(TEntity, null); var _tItems = _items.GetType(); var _item = _tItems.GetProperty("Item"); var _tItem = _item.PropertyType; var _countProp = _tItems.GetProperty("Count");//获取泛型中的属性"Count" if (_countProp == null) throw new Exception("Cannot find the property 'Count' in " + _items.ToString()); var _count = (int)_countProp.GetValue(_items, null);//获取关联记录的数量 for (int i = 0; i < _count; i++) { var _value = _item.GetValue(_items, new object[] { i }); CascadingDeletes(_value);//删除其他表有外键关联的记录 } } } try { DeleteByName(TEntity);//删除没外键关联的记录 } catch (Exception ex) { throw ex; } }我在用更通俗的语言为大家介绍一下什么时级联删除:例如员工表中一项数据是部门ID,部门ID是部门表的主键,如果是级联删除,当删除了部门A的时候,会把所有属于部门A的员工都给删除。Linq级联删除因为Linq语言的复杂性,就会让人感到更难实现。下面继续上述代码实现Linq级联删除。
public static void DeleteByName(T TEntity) where T : class { var type = TEntity.GetType(); var table = TableFactory.CreateTable(type ); table.DeleteOnSubmit(TEntity); //Console.WriteLine("Delete:"+ TEntity.ToString()); } public static class TableFactory { public static System.Data.Linq.Table CreateTable() where T : class { return Database.NWDB.GetTable(); } public static System.Data.Linq.ITable CreateTable (Type t) { return Database.NWDB.GetTable(t); } } public static class Database { private static DLinq.NWDBDataContext _NWDB = null; public static DLinq.NWDBDataContext NWDB { get { if (_NWDB == null) _NWDB = new DLinq.NWDBDataContext(); return _NWDB; } } }到此,关于"linq级联删除的方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
方法
部门
属性
关联
学习
员工
更多
标记
语言
帮助
复杂
实用
相同
通俗
接下来
代码
代表
信息
复杂性
外表
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
互联网科技海报
广州紫鲸互联网科技有限公司
江苏根荣互联网科技
重庆互联网络科技
青岛互联网科技公司
九亚互联网科技
南京欣网互联网科技
广西互联网科技公司
镁科技互联网资讯平台
互联网保险科技创业
河南住房之家互联网科技
烟台灵鸽互联网科技有限公司
江苏苏星互联网科技有限公司
电子商务与互联网科技的关系
互联网科技资金流入
2021世界互联网领先科技成果发布
西安左小互联网科技有限公司
广州三三互联网科技有限公司
北京品多多互联网科技有限公司
盈实互联网科技
互联网与科技发展
互联网科技公司怎么样
科技类的互联网平台
世界互联网科技公司市值排名
互联网科技如何创业
互联网科技公司营业执照怎么办理
领航科技大厦互联网公司
互联网与数字科技关系
2021世界互联网领先科技成果发布