代碼 :
public class MyRepository
{
public TeamContext _teamContext;
public MyRepository(TeamContext teamContext)
{
_teamContext = teamContext;
}
public void AddTeam(Team team)
{
team.Id = Guid.NewGuid();
_teamContext.Team.Add(team);
}
}
團隊名稱應該是唯一的。使用物體框架如何驗證?
uj5u.com熱心網友回復:
您可以檢查是否有另一條同名記錄。如果是,那么您需要拋出例外。否則,繼續流程。
public void AddTeam(Team team)
{
if(_textContext.Team.Any(t => t.Name == team.Name))
{
throw new TeamAlreadyExists(team.Name);
}
team.Id = Guid.NewGuid();
_teamContext.Team.Add(team);
}
我建議您從上層(例如services )進行檢查,以盡可能保持存盤庫的方法干凈。
除此之外,建議在資料庫端也使用唯一約束,因為它是執行緒安全的,并且可以防止從其他地方編輯團隊名稱。
uj5u.com熱心網友回復:
使用UNIQUE約束來確保一列或一組列中的所有值彼此不同或唯一。例如 :
CREATE TABLE contacts(
contact_id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT NOT NULL UNIQUE
);
如果您在電子郵件中插入重復值,則會出現如下錯誤:
Error while executing SQL query on database 'xxx': UNIQUE constraint failed: contacts.email
您也可以設定多列唯一:
CREATE TABLE tbaleName(
...
UNIQUE(columnName_1,columnName_2)
...
);
注意: 您不能在 sqlite 中向現有表添加約束。您只能重命名表或向表中添加列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534657.html
上一篇:是否可以將GCPpub/subSteamingPullFutures與discordpy集成?
下一篇:如何正確查詢型別“dict”?
