我需要比較我的POCO
類和我的數據庫上的內容。 我目前使用Microsoft Roslyn
和Microsoft.SqlServer.SMO
並在我看來,比較數據,「大致」。它的工作完美,但我想知道是否有更好的方法來做到這一點。如何比較POCO類和數據庫?
今天我必須使用Roslyn編譯文件,加載數據庫信息並比較我想要的。
比方說,我有這個POCO
文件:
[Table("XPTO", Schema="ASD")]
public class MyPoco
{
public int PropId {get; set;}
public virtual Prop Prop {get; set;}
public DateTime? MyDate {get; set;}
}
而且我也有表信息。我想知道在我的數據庫中我的POCO
類(MyDate)中是否可以爲空,反之亦然。我想查看我的數據庫是否有Foreign Key
到表Props
,以及它是否爲我的POCO
中不可爲空。正如我所說,它已經在今天工作,我只是想重寫代碼使用更有效的方式來維護。
EntityFramework是否提供某種API或任何東西?
系統信息
SQL Server 2008 R2
Entity Framework 4.1
C# 4.0
感謝();
感謝您的回答,那可能是一個開始的地方。這基本上是我需要的,除了我需要獲取實例化上下文之間的區別,或者甚至是POCO文件本身之間的差異,因爲我可以使用Roslyn,並與數據庫進行比較。我會看看你的答案,看看是否適合我。再次感謝。 – eestein 2013-04-04 16:26:30
不客氣。那麼,這是當前的'運行時'快照 - 那些應該與Db'相對應'。但對於'真正的Db'狀態 - 您需要查詢Db - 使用系統表獲取表,關係,字段等,並構建「Left」模型(Db) - 然後與「Right」模型進行比較(你的代碼之一)。這就是我用Db代碼生成器簡化了一下,你分層次地進行比較,至少類似這樣的事情:) – NSGaga 2013-04-04 16:44:17
我只是深入瞭解你的方法,但看到你實例化上下文,我決定不去那樣。問題是我檢查了poco文件並使用了我與表中信息進行比較的屬性。該應用程序非常大,使用這種方法我需要處理幾個不時會改變的自定義DLL。無論如何,你的回答讓我想到了,所以再次感謝你。 – eestein 2013-04-05 10:54:51