【发布时间】:2015-03-10 13:01:23
【问题描述】:
我正在使用 linq 在数据库中保存一些数据。我有一个 DAO 类,我在其中放置了所有 CRUD 方法,还有另一个类,我在其中定义了我的表及其列。
[Table(Name = "CONTACTS")]
public class UserContacts
{
private int _id;
[Column(Name = "ID", IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int ID
{
get { return _id; }
set { _id = value; }
}
private string _name;
[Column(Name = "NAME", CanBeNull = false)]
public string NAME
{
get { return _name; }
set { _name = value; }
}
private string _number;
[Column(Name = "NUMBER", CanBeNull = false)]
public string NUMBER
{
get { return _number; }
set { _number = value; }
}
}
DAO 类
public class DAOUserContacts
{
public IList<UserContacts> list = new List<UserContacts>();
public IList<UserContacts> GetData()
{
try
{
using (DataBaseContext db = new DataBaseContext(DataBaseContext.ConnectionString))
{
list = (from info in db.UserContacts orderby info.COLUMN_NAME ascending select info).ToList();
}
return list;
}
catch (Exception)
{
return null;
}
}
// Other methods
}
我在 LongListSelector 中显示了存储在该数据库中的所有数据。
在 Main.cs 构造函数中
llsContacts.DataContext = new DAORUserContacts().GetData();
在 Main.xaml 中
<phone:LongListSelector x:Name="llsContacts" ItemsSource="{Binding}" >
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<ListBoxItem local:TiltEffect.IsTiltEnabled="true">
<Grid Margin="0" >
<TextBlock Text="{Binding NAME}" FontFamily="Segoe WP" FontSize="28" Margin="77,0,0,0" />
<TextBlock Text="{Binding NUMBER}" FontFamily="Segoe WP Light" FontSize="17" Margin="77,33,0,0"/>
</Grid>
</ListBoxItem>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
我在互联网上进行了研究,发现了 ObservableCollection,我想使用它。我读了这篇文章http://www.codeproject.com/Articles/80555/Databinding-in-Silverlight-applications#_Toc261149245 了解它是如何工作的,但我仍然有一些疑问。
在本文中,创建了一个继承自 INotifyPropertyChanged 的 Employee,以及一个继承自 ObservableCollection 的 Emplyees。
就我而言,我希望我的列表(在 xaml 上)始终显示数据库中的内容。
是否可以从 INotifyPropertyChanged 继承我的 UserContacts?因为这个类声明了一个Table...
我的 DAOClass 是否应该从 ObservableCollection 继承?或者只是我的 GetData() 返回 ObservableCollection 而不是 List?
另一件事.. 有一个按钮,当用户按下时,更新数据库(搜索设备上的所有联系人,并从数据库中删除手机中删除的内容,并将手机中添加的内容添加到数据库中)。
使用 ObservableCollection,当联系人搜索完成并且我的数据库更新时,我应该调用一些东西来更新 xaml 上的 LongListSelector?还是数据库更新后,LongListSelector 也会自动更新?
谢谢...
【问题讨论】:
标签: windows-phone-8 linq-to-sql observablecollection