簡體   English   中英

在運行時驗證EF數據模型(EDMX和SQL數據庫架構之間的列表差異)

[英]Validating EF Data Model at run-time (List discrepancies between EDMX and SQL Database Schema)

我想在應用程序啟動時對所有現有數據模型實體和可能存儲過程(針對其代表性數據庫表)執行.NET實體框架運行狀況檢查。 我們正在使用Database First Approach,因此使用容易出現手動執行錯誤的SQL腳本對生產進行了更改。

這將允許我以受控方式識別任何同步問題(特別是在部署之后)(自定義錯誤處理)。 在新版本部署中提供更高的可信度並更快地調試問題。

此外,這將添加到自診斷屏幕,以便基礎架構人員可以隨時驗證數據庫運行狀況。

知道怎么做嗎? 我似乎無法找到這樣做的本機EF機制,因此當您使用不可預測且容易被遺漏的錯誤實體時它將失敗。

好的,所以我找不到構建機制來做這個,所以我不得不使用反射來獲取DB上下文中的所有實體,然后單獨嘗試在try catch中檢索FirstOrDefaut()。 它並不完美,但它會對EDMX和數據庫之間的對齊提供更高的信心。

public static List<Type> GetAllEntities()
{
    var entityList = new List<Type>();
    var context = typeof(<DatabaseContextClass>);

    foreach (var property in context.GetProperties())
    {
        if (!property.PropertyType.IsGenericType
            || property.PropertyType.GetGenericTypeDefinition() != typeof(ObjectSet<>)) // EF 4
            continue;

        var entityType = property.PropertyType.GetGenericArguements()[0];
        entityList.Add(entityType);

        return entityList;  
    }
}

public static T GetFirstObject<T>() where T : EntityObject
{
    var context = new <DatabaseContextClass>();

    IQueryable<T> = dbQuery = context.CreateObjectSet<T>();

    return dbQuery.AQsNoTracking().FirstOrDefault();
}

暫無
暫無

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

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