【发布时间】:2013-03-25 07:32:41
【问题描述】:
我想我现在掌握了大部分知识,但遗憾的是我找不到任何可以真正帮助我的教程,因为大多数人都在使用 SQL 连接,而我正在使用实体框架。
到目前为止,我创建了一个名为 Farve 的 CSLA 业务类和一个名为 FarbeListe 的 CSLA 业务列表类。在我的 xaml 中,我有一个列出模型的网格视图。但我现在不知道如何获取数据,但我确信我已经很接近了。请帮我举一个简单的例子,不要发布任何教程。我想我现在最了解他们,但他们仍然没有帮助。
这里是我的 csla 类 Farbe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Csla;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using MusterConnectionDB.Datenbank;
namespace MusterConnectionDB.Business
{
[Serializable]
public class Farbe : Csla.BusinessBase<Farbe>
{
TestDBEntities db = new TestDBEntities();
public Farbe()
{
BusinessRules.AddRule(new Csla.Rules.CommonRules.Required(FarbauswahlNrProperty));
BusinessRules.AddRule(new Csla.Rules.CommonRules.MinValue<int>(FarbauswahlNrProperty, 3));
}
#region Properties
public static readonly PropertyInfo<int> FarbauswahlNrProperty = RegisterProperty<int>(c => c.FarbauswahlNr);
public int FarbauswahlNr
{
get { return GetProperty(FarbauswahlNrProperty); }
set
{
SetProperty(FarbauswahlNrProperty, value);
}
}
public static readonly PropertyInfo<string> KurztextProperty = RegisterProperty<string>(c => c.Kurztext);
public string Kurztext
{
get { return GetProperty(KurztextProperty); }
set { SetProperty(KurztextProperty, value); }
}
public static readonly PropertyInfo<string> RessourceProperty = RegisterProperty<string>(c => c.Ressource);
public string Ressource
{
get { return GetProperty(RessourceProperty); }
set { SetProperty(RessourceProperty, value); }
}
public static readonly PropertyInfo<bool> Vari1Property = RegisterProperty<bool>(c => c.Vari1);
public bool Vari1
{
get { return GetProperty(Vari1Property); }
set { SetProperty(Vari1Property, value); }
}
public static readonly PropertyInfo<string> Vari2Property = RegisterProperty<string>(c => c.Vari2);
public string Vari2
{
get { return GetProperty(Vari2Property); }
set { SetProperty(Vari2Property, value); }
}
#endregion
#region Synchronous Factory Methods
public class DataEventArgs : EventArgs
{
public DataEventArgs(Farbe data)
{
this.Data = data;
}
public Farbe Data { get; set; }
}
internal static Farbe New()
{
return DataPortal.CreateChild<Farbe>();
}
internal static Farbe Get(Farbe data)
{
if (data == null)
return null;
return DataPortal.FetchChild<Farbe>(data);
}
#endregion
#region DataProtal Methods
private void Child_Update()
{
using (var ctx = Csla.Data.ObjectContextManager<TestDBEntities>.GetManager(EntitiesDatabase.Name))
{
var data = ctx.ObjectContext.Farben.SingleOrDefault(e => e.FarbauswahlNr == this.FarbauswahlNr);
data.Kurztext = ReadProperty<string>(KurztextProperty);
data.Ressource = ReadProperty<string>(RessourceProperty);
data.Var1 = ReadProperty<bool>(Vari1Property);
data.Vari2 = ReadProperty<string>(Vari2Property);
ctx.ObjectContext.SaveChanges();
}
}
private void Child_Insert()
{
using (var ctx = Csla.Data.ObjectContextManager<TestDBEntities>.GetManager(EntitiesDatabase.Name))
{
try
{
var data = new Datenbank.Farbe();
data.Kurztext = ReadProperty<string>(KurztextProperty);
data.Ressource = ReadProperty<string>(RessourceProperty);
data.Var1 = ReadProperty<bool>(Vari1Property);
data.Vari2 = ReadProperty<string>(Vari2Property);
ctx.ObjectContext.Farben.AddObject(data);
ctx.ObjectContext.SaveChanges();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
private void Child_Delete()
{
using (var ctx = Csla.Data.ObjectContextManager<TestDBEntities>.GetManager(EntitiesDatabase.Name))
{
try
{
var data = ctx.ObjectContext.Farben.SingleOrDefault(e => e.FarbauswahlNr == this.FarbauswahlNr);
ctx.ObjectContext.Farben.DeleteObject(data);
ctx.ObjectContext.SaveChanges();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
#endregion
}
}
现在我的 CLSA 清单 klass FarbeListe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Csla;
using MusterConnectionDB.Business;
namespace MusterConnectionDB.Business
{
public class FarbeListe : Csla.BusinessListBase<FarbeListe, Farbe>
{
public FarbeListe()
{
}
protected override void Child_Create()
{
base.Child_Create();
}
private void Child_Fetch(IEnumerable<Farbe> data)
{
RaiseListChangedEvents = false;
foreach (var item in data)
{
this.Add(Farbe.Get(item));
}
RaiseListChangedEvents = true;
}
internal static FarbeListe Get(IEnumerable<Farbe> data)
{
if (data == null)
return null;
return DataPortal.FetchChild<FarbeListe>(data);
}
internal static FarbeListe New()
{
return DataPortal.CreateChild<FarbeListe>();
}
internal static FarbeListe GetAll()
{
return DataPortal.Fetch<FarbeListe>();
}
}
}
如何编写模型类 FarbeViewModel 的方法?我只需要获取属性模型的数据。
public void ExecuteAktu(object obj)
{
}
【问题讨论】:
-
@WiiMaxx 好吧,我猜,这是由于他使用的 CSLA。但我不确定。哦,请用英文写。这对非德语人士来说是不公平的。 ;o)
-
@DHN 我刚刚用他的母语回答了他 :o) 他说 请将您的代码放入该方法中,这就是模型类 FarbeViewModel 这对我来说意味着他有一个单独的模型
-
@WiiMaxx 好吧,既然我们在这里并不“孤单”,这仍然是不公平的,因为没有其他人可以参与讨论。 ;o)
-
在 MVVM 模式之后是一个业务类、业务列表类和一个模型类,用于“真正的”编码。和视图类。所以我的课程是 Farbe、FarbListe、FarbViewModel 和 FarbeView。而属性模型只是 FarbListe 模型;
-
嗨,我的 OfficeScan 现在允许访问:D
标签: c# wpf database entity-framework mvvm