1
我有一个SL4/WCF RIA服务/ EF 4应用程序。我无法将我的Included实体放入我的SL4数据上下文中。实体框架/ RIA服务包括不工作
在本申请的服务器侧服务部,这是我的方法:
[Query(IsDefault = true)]
public IQueryable<ToolingGroup> GetToolingGroups()
{
var groups = this.ObjectContext.ToolingGroups.Include("MetaData").OrderBy(g => g.Name);
return groups; //breakpoint set here
}
我分配它到VAR组,以允许其在方法返回之前进行检查。如果我的方法返回之前设置一个断点,并添加一行到我的收藏窗口中的元数据有:
groups.First().MetaData
当我让方法的返回,并检查它在Silverlight的用户界面完成事件元数据为空。
void loadOperation_Completed(object sender, System.EventArgs e)
{
grid.ItemsSource = _toolingContext.ToolingGroups;
UpdateUI(); //breakpoint set here
}
当我做这在我的监视窗口元数据是空:
_toolingContext.ToolingGroups.First().MetaData
我检查,以确保通过调用。首先()在这两种情况下返回ToolingGroup是相同的实体和它是。
为什么元数据在服务方法和我的UI方法之间丢失(例如空)?
SOLUTION:
// The MetadataTypeAttribute identifies ToolingGroupMetadata as the class
// that carries additional metadata for the ToolingGroup class.
[MetadataTypeAttribute(typeof(ToolingGroup.ToolingGroupMetadata))]
public partial class ToolingGroup
{
// This class allows you to attach custom attributes to properties
// of the ToolingGroup class.
//
// For example, the following marks the Xyz property as a
// required property and specifies the format for valid values:
// [Required]
// [RegularExpression("[A-Z][A-Za-z0-9]*")]
// [StringLength(32)]
// public string Xyz { get; set; }
internal sealed class ToolingGroupMetadata
{
// Metadata classes are not meant to be instantiated.
private ToolingGroupMetadata()
{
}
public int Id { get; set; }
[Include] // Added so MetaData gets serialized
public MetaData MetaData { get; set; }
public Nullable<int> MetaDataId { get; set; }
public string Name { get; set; }
public ToolingCategory ToolingCategory { get; set; }
public int ToolingCategoryId { get; set; }
public EntityCollection<ToolingType> ToolingTypes { get; set; }
}
}
不需要命名“元数据”类“元数据”!你可以自由地命名它,因为它将设置在'MetadataTypeAttribute' :) – AbdouMoumen 2011-03-16 21:50:29
是的,我注意到,当命名我的表时,MetaData是一个糟糕的选择 - 当然事实上。但是 - 我没有看到添加[Include]属性的位置。 – 2011-03-16 21:56:18
你可以看看这个截图,看看我是否在正确的位置添加属性? http://img855.imageshack.us/i/include.png/否则,我的解决方案中看不到任何类似于您的示例的代码。 – 2011-03-16 22:01:34