0
我玩弄SQLite和屬性,和我有一個看起來像這樣在我的代碼性能:如何使用屬性來減少我的屬性中的樣板?
const string FooKey = "foo";
...
string m_foo;
[DatabaseColumn (FooKey)]
public string Foo {
get { return m_foo; }
set {
if (m_foo == value)
return;
m_foo = value;
OnFooChanged(); // Calls the event FooChanged after a null check
Update (FooKey, Foo); // Updates the field in the database
}
}
這對於對應於表中的列每個屬性相同,唯一的變化是名稱和類型。即,有可能通過這樣的另一個屬性:
const string BarKey = "bar";
...
bool m_bar;
[DatabaseColumn (BarKey)]
public bool Bar {
get { return m_bar; }
set {
if (m_bar == value)
return;
m_bar = value;
OnBarChanged(); // Calls the event BarChanged after a null check
Update (BarKey, Bar); // Updates the field in the database
}
}
現在我只用DatabaseColumn屬性,以確定哪些字段對應表中的列,這樣我可以更容易地將整行到數據庫中。有沒有辦法讓更多的這是DatabaseColumn的責任,以減少我的代碼中的樣板?
恕我直言更新屬性更新後的數據庫是不是一個好主意......看看現有的ORM框架,他們都沒有像這樣工作,所以可能有很好的理由(關閉頂部我的頭,我能想到2:效率和數據完整性/一致性) – 2010-10-17 15:12:14
@Thomas:謝謝,我會環顧四周。我之前沒有做過任何ORM - 也許已經有一個框架可以滿足我的需求。 – 2010-10-17 15:28:17
是的,當然有;)。編寫一個ORM是困難的,所以除非你有非常特殊的需求,否則我會推薦使用現有的(實體框架相當不錯,NHibernate也被廣泛使用,但是更困難的IMO) – 2010-10-17 15:34:03