linq级联删除的方法是什么
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要介绍"linq级联删除的方法是什么",在日常操作中,相信很多人在linq级联删除的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"linq级联删除的
千家信息网最后更新 2025年11月16日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安全错误
数据库的锁怎样保障安全
图片是存在数据库还是路径
数据库研讨题
小嘉网络技术服务壁纸
网络技术第一章第四节
华为ai数据库开源
xml文件怎么数据库连接
软件开发创业产品呈现
服务器搭建网站
中国网络安全提示
服务外包软件开发经营范围
幼儿园培养网络安全的七种意识
天津进口软件服务器
关于网络安全的笔记
图灵机器人数据库
软件开发助理就业前景
安庆求职招聘软件开发外包公司
简易的网络安全接入方案
城市数据库 c
网络安全意识树的不牢
被服务器拒之门外 只能自力更生的电竞人
数据库社会实践图片
怎么修改数据库的编码
软件开发供应链公司
山东省济南联想服务器客服电话
个人版数据库
服务器群集 中间主机
郑州软件开发培训班
神战奇迹召唤pk服务器
数据库系统基础知识
数据库参照关系和被参照关系