我有实体Group
和User
.
该Group
实体拥有Users
财产是用户的列表.
用户有一个名为的属性IsEnabled
.
我想编写一个返回Group
s 列表的linq查询,该列表只包含User
s IsEnabled
为true 的s .
例如,对于类似下面的数据,
AllGroups
组A
用户1(IsEnabled = true)
用户2(IsEnabled = true)
用户3(IsEnabled = false)
B组
用户4(IsEnabled = true)
用户5(IsEnabled = false)
用户6(IsEnabled = false)
我想得到
FilteredGroups
A组
用户1(IsEnabled = true)
用户2(IsEnabled = true)
B组
用户4(IsEnabled = true)
我尝试了以下查询,但Visual Studio告诉我
[不能将属性或索引器'用户'分配给它 - 它是只读的]
FilteredGroups = AllGroups.Select(g => new Group()
{
ID = g.ID,
Name = g.Name,
...
Users = g.Users.Where(u …
Run Code Online (Sandbox Code Playgroud) 我仍然试图通过Silverlight和RIA Services来实现我的目标,当然还要从一些更"有趣"的东西开始,比如网格和智能分页.我可以连接到RIA Services(使用自行开发的ORM,而不是L2S或EF),在网格上获取数据,并连接到DataPager.域服务与本土ORM一起运行良好,至少对于查询而言.(仍在使用完整的CRUD.)但是,仍然存在问题:
为了支持用户应用程序,除了智能分页(仅运行查询显示所需的行)和分组之外,我还需要用户控制的排序和过滤.
到目前为止,我在DataGrid或DataPager中没有看到任何外部化这些功能的内容,因此可以将过滤,排序和分页参数传递给服务器以构建适当的查询.
数据集可能非常大; 我选择用于原型制作工作的我的表可以在一些客户中拥有多达35,000个条目,我确信还有其他更大的表格,我将不得不在某个时候处理.因此,"智能寻呼"方面至关重要.
我们欢迎您的想法,建议,指导和nerf砖.
我遇到了一些与此线程中指定的问题类似的WCF RIA服务的困难.
我正在创建的域服务方法(Query方法)应该采用复杂的对象参数.示例域服务方法:
public ComplexObjectResult GetComplexObject(ComplexObjectParameter test)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
参数对象:
public class ComplexObjectParameter
{
[Key]
public decimal ID { get; set; }
... other fields
}
Run Code Online (Sandbox Code Playgroud)
我得到此编译错误:错误70域操作条目'GetComplexObject'的参数'test'必须是预定义的可序列化类型之一.
在网上搜索了一下后,我发现了这个msdn线程.它声明这是RIA服务的限制,并且该线程没有指定任何体面的解决方法.
现在似乎有一些肮脏的解决方法:
更改复杂参数以键入字符串和序列化/反序列化参数对象我自己,我发现一个非常hacky解决方案.
在域服务方法上使用[Invoke]标签并放弃所有RIA跟踪功能,我首先使用RIA.
是否有替代方案可以解决上述解决方案的缺点?是否有人为此问题找到了更优雅的解决方法?
谢谢
我在视图中的一个按钮,绑定到ViewModel的ICommand属性(实际上它是来自mvvv-light的RelayCommand)
如果用户点击按钮,我想导航到新视图.当然,NavigationService是View而不是ViewModel的一部分.这意味着导航是View的责任?但在我的情况下,单击按钮时我将要查看的视图取决于很多因素,包括登录用户是谁,数据库所处的状态等等......当然,视图不需要全部那些信息.
执行NavigationService.Navigate调用的首选选项是什么?
有人可以简洁地解释一下吗?它可以与非Silverlight客户端一起使用吗?
我目前正在创建Silverlight 3数据驱动的应用程序.要访问数据库,使用了两种常用方法:RIA服务和ADO.NET数据服务.有没有人对何时/为何选择每种方法有任何指导?以下是我从研究/经验中收集的内容.有什么想法吗?
ADO.NET似乎只对严格的数据库调用有用.如果您需要将数据服务公开给其他应用程序(忽略Silverlight 3的域限制),这是一种很好的方法.此外,如果URL/Query语法在您的应用程序中有用,这是另一个优点
RIA Services似乎是一个更灵活,更可接受的框架.它似乎给你的不仅仅是严格的数据库访问.它仅限于用于Silverlight/Web应用程序,因为它不是通过服务公开的.
思考?想法?评论?
如果您将RIAServices与Custom ValidatorAttributes一起使用,那么这不仅仅是一个警告.
这是Senario,我正在创建一个自定义DataAnnotation,它将根据是否设置了一系列其他属性来验证属性,例如; 如果Prop1为100,则Prop2,Prop3或Prop4不能为0,其中一个必须设置.我也在使用RIA Services,所以我创建了ValidatorAttribute我的.shared.cs文件.在为helper CannotBeZeroIf类编写了所有测试之后,我开始将属性添加到Model Class中.当然,事情开始变得非常错误.RIA Services在CodeGen期间开始抛出NullReferenceException.
CreateRiaClientFilesTask - > NullReferenceException
事实证明,我正在使用验证器的构造函数将值传递给类.通过切换到使用ObjectInitialization语法,一切都得到了修复.
在处理RIA服务和自定义数据注释验证器时,答案似乎是使用ObjectInitializer语法.
这是我第二次遇到WCF RIA服务这个非常奇怪的问题!可悲的是,我必须两次解决问题,再次经历不同的箍:(,即使我已经给自己留下了一个指示解决方案的注释:P
无论如何,"非常有用"的错误消息如下:
...\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Ria.Client.targets(304,5):错误:代码生成器'Microsoft.ServiceModel.DomainServices.Tools.CSharpCodeDomClientCodeGenerator'遇到致命异常但无法生成项目"ProjectA"的代码
CQRS有很多意义.但是,使用提供更改跟踪的ORM的方法似乎是相互排斥的.如果我有一个"通道"用于查询以将我的对象作为RO,则无需更改跟踪.如果我有另一个CUD +命令通道,它更多的是带有光DTO的RPC方法,然后发送自跟踪实体以在较低层合并.
如何协调这两种方法(CQRS/ORM + STE)?
我们正在编写一个多租户的Silverlight应用程序.用户使用Windows窗体身份验证登录,我们从表中提取该用户的连接字符串.字符串的形式如下:
Data Source=1.2.3.4; Initial Catalog=database; Persist Security Info=True; User ID=######; Password=##########
Run Code Online (Sandbox Code Playgroud)
这工作正常.然后我们决定设置应用程序名称,因为这里列出的原因是个好主意:
Data Source=1.2.3.4; Initial Catalog=database; Application Name=application; Persist Security Info=True; User ID=######; Password=##########
Run Code Online (Sandbox Code Playgroud)
但是,现在没有建立连接,所以我们遇到了错误.这仅在部署的站点上失败.通过Visual Studio运行显然不受影响.进行连接的代码没有任何变化.我愿意相信应该有变化,但我无法弄清楚它们应该是什么.
正在创建连接如下:
public class OurDataContext : DataContext
{
public OurDataContext()
: base(SessionCache.OurConnectionString)
{
....
}
}
Run Code Online (Sandbox Code Playgroud)
SessionCache.OurConnectionString
是从数据库中读取的字符串.
UPDATE
连接字符串的更改可能是红色鲱鱼.我们只在一台Web服务器上遇到此故障(我无法直接访问该服务器).添加属性,通过另一台Web服务器所引用的数据库(即我做访问)不会重现该问题.这使我得出结论,错误在其他地方.但是,我仍然没有接近解决这个问题.
实际错误是一个例外:
An exception of type 'System.ServiceModel.DomainServices.Client.DomainOperationException' occurred and was caught.
------------------------------------------------------------------------------------------------------------------
01/31/2012 14:18:53
Type : System.ServiceModel.DomainServices.Client.DomainOperationException, System.ServiceModel.DomainServices.Client, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Message : Load operation failed for query 'GetUserSecurityConfig'. The …
Run Code Online (Sandbox Code Playgroud) wcf-ria-services ×10
silverlight ×3
c# ×2
.net ×1
.net-3.5 ×1
.net-4.0 ×1
c#-4.0 ×1
cqrs ×1
datapager ×1
linq ×1
mvvm ×1
mvvm-light ×1
resx ×1
wcf ×1