EF 多對多關係 中間表操作

2021-10-11 02:48:34 字數 1247 閱讀 2182

ef多對多關係中間表簡單操作

業務場景

新增中間表

修改中間表

業務中碰到兩個表是多對多關係

示例:實際資料庫中是表users(使用者表)表rooms(辦公室),和中間表userrooms(使用者的辦公室通行許可權)

ef中已經有users使用者表和rooms辦公室表的對映,但是userrooms是沒有實體對映的。

users:主鍵userid   姓名username

rooms:主鍵roomid   房間號roomno

userrooms:userid  roomid

乙個辦公室有多個使用者,乙個使用者也會有多個辦公室的通行許可權

在已有rooms表資料的情況下,要新增乙個使用者和幾個辦公室的通行許可權

//req是入參 

//req=

_db.users.add(new users);

這樣資料庫會自動新增中間表userrooms資料

小張有了房間1和房間2的通行許可權,這時候我們要調整為房間2和房間3的許可權,

那麼需要中間表刪除小張和房間1的關聯,新增小張和房間3的關聯

//req入參

//req=;

var useritem = _db.users.where(x=>x.userid==req.userid).firstordefault();

//新許可權

var newrooms = _db.rooms.where(x=>roomarr.contains(x.roomid)).tolist();

//舊許可權

var oldrooms = useritem.rooms;

//需要刪除的許可權

var delrooms = oldrooms.except(newrooms).tolist();

//需要新增的許可權

var addrooms = newrooms.except(oldrooms).tolist();

foreach(var delitem in delrooms)

foreach(var additem in addrooms)

重複的許可權不管,舊的有新的沒有要刪除,新的有舊的沒有要新增,這裡用except挺方便

hibernate 多對多關係中間屬性關聯方法

hibernate 框架可以將面向關係的資料庫模型封裝成物件導向的資料庫模型,這樣以來一方面了我們在具體應用中的資料庫設計,另一方面又簡化了我們的編碼。然而在現實中我們往往會發現有些面向關係的資料庫模型轉化成物件導向的資料庫模型之後很難再 hibernate 中配置。比如 在多對多關係模型中,中間表...

多對多關係

實體模型中相關的模型之間為了方便查詢需要做到你中有我 我中有你 一對多表設計上是在多方應用少方的主鍵作為外來鍵約束 模型上需要在多方加入乙個少方模型物件的屬性,在少方加入乙個多方物件的列表 語法 少方物件 db.relationship 少方模型名 backref db.backref xxlist...

Flask sqlalchemy多對多關係

from flask import flask from flask sqlalchemy import sqlalchemy article tag db.table article tag db.column article id db.integer,db.foreignkey article...