我正在使用.NET RIA Services July Preview在我的Silverlight客户端和我的服务器之间进行通信。在我的服务器上,我有一个托管Silverlight应用程序的ASP.NET项目。在ASP.NET应用程序中,我有一个带有名为Hour的表的Linq-to-Sql DataModel。我通过创建Hour.shared.cs扩展了Hour实体的3个属性:

public partial class Hour
{
   public string CustomerName { get; set; }
   public string ProjectName { get; set; }
   public string FullProjectName { get { return this.CustomerName + " - " + this.ProjectName; } }
}

在我的域服务中,我有一个名为GetHours的get方法。由于Linq中的设计,我无法显式创建Hour实体的新实例,并通过新实体设置我的新属性的值:

var query = from hours in this.Context.Hours
            select new Hour()
            {
               HourID = hours.HourID,
               ProjectName = "Hello World"
            };

如果我只选择几小时就可以正常工作,但我需要设置ProjectName和CustomerName。

关于如何解决这个问题的任何想法?

有帮助吗?

解决方案

再次尝试我的回答,最后一次对我嗤之以鼻。

可能最简单的方法是使用函数:

public Hour PopulateHour(Hour hour)
{
  hour.CompanyName = "xyz";
  hour.ProjectName = "123";
  return hour;
}

然后你可以在你的linq查询中使用它:

var query = from hour in this.Context.Hours
            select PopulateHour(hour);

如果您已经将CompanyId和ProjectId作为Hour类中的属性,那么将使这更容易的一件事就是。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top