簡體   English   中英

從另一個類DBContext調用方法

[英]Call method from another class DBContext

從其他幾個類我想調用此命令來獲取下一個id號。 如果有10條記錄,我想要返回的數字11。

Table1.id = NextId(“table1”);

public class Test
{
    private PrenDBContext db = new PrenDBContext();

    public NextId(string table)
    {
        return MaxId = db.Raknare.Where(x => x.Column.Equals(table)).Max(x => x.ID) + 1;
    }
}

如果我把public 靜態 NextId我不能使用db ..

每次調用NextId創建一個新的上下文。 不要嘗試重新使用調用之間的上下文。 由於連接池(您應該確保已啟用,如果不是),創建新上下文並不是特別昂貴。 實際上,在不需要的情況下保持上下文可能會更加耗費資源。

另外,請注意這里的比賽條件。 如果你想弄清楚新項目的ID是什么,你應該真的避免嘗試自己解決這個問題。 只需使用允許DB為每行分配自己唯一值的列類型。 目前,您需要處理在運行此查詢之后但在添加新記錄之前創建另一條記錄的情況(如果這確實是您正在做的事情)。 非常難以從數據庫本身進行異地管理。

你應該讓你的PrenDBContext靜態:

public class Test 
{
        private static PrenDBContext db = new PrenDBContext();

        public static  NextId(string table)
        {
            return MaxId = db.Raknare.Where(x => x.Column.Equals(table)).Max(x => x.ID) + 1;
        } 
}

雖然每次調用NextId方法時都建議創建一個單獨的PrenDBContext

public class Test 
{
        public static  NextId(string table)
        {
            var db = new PrenDBContext();
            return MaxId = db.Raknare.Where(x => x.Column.Equals(table)).Max(x => x.ID) + 1;   
        } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM