我想在我的项目运行时自动运行我的void方法,但事实并非如此。我试过了,但我认为这不是好方法。有什么其他方式或如何初始化我的void方法。
string fAccount;
[Key]
[Size(150)]
public string Account
{
get { GroupedAccount(); return fAccount; }
set { SetPropertyValue<string>(nameof(Account), ref fAccount, value); }
}
private void GroupedAccount()
{
SqlConnection conn = new SqlConnection("Connection");
SqlCommand cmd = new SqlCommand("SELECT * FROM Traders", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Open();
var groupedData = from b in dt.AsEnumerable()
group b by b.Field<string>("Account Name") into g
select new
{
fAccounts = g.Key,
};
foreach (var r in groupedData)
{
SqlCommand cmd2 = new SqlCommand("INSERT INTO dbo.TradersAccount (Account) VALUES (@Account)", conn);
cmd2.Parameters.AddWithValue("@Account", r.fAccounts);
cmd2.ExecuteNonQuery();
}
conn.Close();
}
答案 0 :(得分:1)
在XAF应用程序中,您有多个放置启动代码的地方,但是对于您而言,您似乎正在尝试根据一些现有数据初始化数据库中的某些对象。推荐的位置是 Updater.cs 文件中的ModuleUpdater
。有关更多信息,请参见文档:
您的Account
属性是XPO对象的一部分。 XPO是一个对象关系映射器,也就是说,它抽象了将C#类传输到SQL存储的复杂性。通常,您应该避免在持久属性的获取器和设置器中放置 any 附加代码。 DevExpress文档很好:
尤其是,XPO旨在消除对直接SQL的需求。如果每次修改TradersAccount
对象时都需要创建或更新Trader
对象,则通常可以创建一个TraderAccount
XPO对象并定义一个association property并使用new TraderAccount(Session)
并将其添加到关联属性集合。然后XPO将自动为您生成所有相应的SQL。