无法分配给 Lightswitch 中的外键 - 属性 或索引器无法分配给 -- 它是只读的
Cannot assign to foreign keys in Lightswitch - Property or indexer cannot be assigned to -- it is read only
我看了其他类似的问题,但我无法自己解决这个问题。我目前正在使用 Lightswitch 12.0.3 Update 4 版本的 Lightswitch 和我以前版本的 Lightswitch 我可以轻松地做这些事情......所以我不明白发生了什么变化以及为什么我不能再这样做了。
我得到一个错误:
Property or indexer 'LightSwitchApplication.Report.Customer' cannot be assigned to -- it is read only
其中 Report
是我的屏幕,Customer
是我的 table。所以在(屏幕的)后面的代码中,我正在尝试这样做:
partial void Report_InitializeDataWorkspace(List<IDataService> saveChangesTo)
{
if (this.CustomerId.HasValue)
{
this.Customer = this.DataWorkspace.ApplicationData.Customers.Where(w => w.Id == this.CustomerId.Value).Single();
}
}
在这种情况下,CustomerId
是添加到我的屏幕的本地 int 属性。
现在的错误是 this.Customer
无法分配给,因为它是只读的。
我错过了什么?
此外,我在另一个地方遇到了同样的错误:
Property or indexer 'LightSwitchApplication.Report.NewProduct' cannot be assigned to -- it is read only
partial void CreateNewProduct_Execute()
{
this.NewProduct = this.DataWorkspace.ApplicationData.Products.AddNew();
this.OpenModalWindow("NewProduct");
}
我怀疑您遇到的问题与 2011 年初的测试版和 RTM 版本之间的许多变化有关。
虽然我对 Silverlight 方面的事情有点生疏(近年来一直专注于 HTML 5 LightSwitch 路线),但我会尝试提供一些可能有帮助的指示。
至于你的 Report_InitializeDataWorkspace 代码(我猜这是为了根据传递的参数默认 this.Customer 值)你应该能够解决这个问题如下: -
if (this.CustomerId.HasValue)
{
var c = this.DataWorkspace.ApplicationData.Customers.Where(w => w.Id == this.CustomerId.Value).Single();
this.Customer.Name = c.Name;
this.Customer.AddressLine1 = c.AddressLine1;
}
如果这不是您的意图,请提供更多有关您尝试实施的背景信息。
关于 CreateNewProduct 代码,您应该能够按照以下几行执行某些操作:-
partial void CreateNewProduct_Execute()
{
Product newProduct = this.DataWorkspace.ApplicationData.Products.AddNew();
this.Products.SelectedItem = newProduct;
this.OpenModalWindow("NewProduct");
}
同样,如果我误解了你的意图,请你提供更多背景信息。
以下文章也可能对这方面有所帮助(尽管它只涵盖 vb 方法而不是 c# 代码):-
LightSwitch Team Blog - Creating a Custom Add or Edit Dialog (Sheel Shah)
虽然这篇文章大约是 2011 年的版本,但它应该与您正在使用的 2013 update 4 版本有一定的相关性。
没有看到 'Customer' 和 'NewProduct' 的声明,我只能猜测您可能已经将其声明为 属性,只有 Getter - 没有 Setter.
如果不是这种情况,您能否显示更多代码来说明失败的原因。
我解决了 "problem" - 这是我的错,未能理解作为 Customer 类型查询的数据项与作为 Local 属性 类型 Customer 的数据项之间的区别。
换句话说,我将 Customer 和 Product 添加为本地屏幕成员而不是查询,现在我的代码按预期工作。
我看了其他类似的问题,但我无法自己解决这个问题。我目前正在使用 Lightswitch 12.0.3 Update 4 版本的 Lightswitch 和我以前版本的 Lightswitch 我可以轻松地做这些事情......所以我不明白发生了什么变化以及为什么我不能再这样做了。
我得到一个错误:
Property or indexer 'LightSwitchApplication.Report.Customer' cannot be assigned to -- it is read only
其中 Report
是我的屏幕,Customer
是我的 table。所以在(屏幕的)后面的代码中,我正在尝试这样做:
partial void Report_InitializeDataWorkspace(List<IDataService> saveChangesTo)
{
if (this.CustomerId.HasValue)
{
this.Customer = this.DataWorkspace.ApplicationData.Customers.Where(w => w.Id == this.CustomerId.Value).Single();
}
}
在这种情况下,CustomerId
是添加到我的屏幕的本地 int 属性。
现在的错误是 this.Customer
无法分配给,因为它是只读的。
我错过了什么?
此外,我在另一个地方遇到了同样的错误:
Property or indexer 'LightSwitchApplication.Report.NewProduct' cannot be assigned to -- it is read only
partial void CreateNewProduct_Execute()
{
this.NewProduct = this.DataWorkspace.ApplicationData.Products.AddNew();
this.OpenModalWindow("NewProduct");
}
我怀疑您遇到的问题与 2011 年初的测试版和 RTM 版本之间的许多变化有关。
虽然我对 Silverlight 方面的事情有点生疏(近年来一直专注于 HTML 5 LightSwitch 路线),但我会尝试提供一些可能有帮助的指示。
至于你的 Report_InitializeDataWorkspace 代码(我猜这是为了根据传递的参数默认 this.Customer 值)你应该能够解决这个问题如下: -
if (this.CustomerId.HasValue)
{
var c = this.DataWorkspace.ApplicationData.Customers.Where(w => w.Id == this.CustomerId.Value).Single();
this.Customer.Name = c.Name;
this.Customer.AddressLine1 = c.AddressLine1;
}
如果这不是您的意图,请提供更多有关您尝试实施的背景信息。
关于 CreateNewProduct 代码,您应该能够按照以下几行执行某些操作:-
partial void CreateNewProduct_Execute()
{
Product newProduct = this.DataWorkspace.ApplicationData.Products.AddNew();
this.Products.SelectedItem = newProduct;
this.OpenModalWindow("NewProduct");
}
同样,如果我误解了你的意图,请你提供更多背景信息。
以下文章也可能对这方面有所帮助(尽管它只涵盖 vb 方法而不是 c# 代码):-
LightSwitch Team Blog - Creating a Custom Add or Edit Dialog (Sheel Shah)
虽然这篇文章大约是 2011 年的版本,但它应该与您正在使用的 2013 update 4 版本有一定的相关性。
没有看到 'Customer' 和 'NewProduct' 的声明,我只能猜测您可能已经将其声明为 属性,只有 Getter - 没有 Setter.
如果不是这种情况,您能否显示更多代码来说明失败的原因。
我解决了 "problem" - 这是我的错,未能理解作为 Customer 类型查询的数据项与作为 Local 属性 类型 Customer 的数据项之间的区别。
换句话说,我将 Customer 和 Product 添加为本地屏幕成员而不是查询,现在我的代码按预期工作。