javascript - 在 Breeze 实体中分配新值

标签 javascript breeze

我正在使用 BreezeJS 和 DurandalJS 框架开发一个水疗 Web 应用程序。我遇到了一个无法解决的问题。

我有一个名为:汽车的实体,该实体包含名称、编号、所有者、类型和制造商。在此实体中,名称和编号在实体创建并保存在数据库中时填写。其他属性允许为 NULL。

这是因为其他值是在模式/对话框屏幕期间填充的。在这里,用户可以从列表中选择所有者,也可以从列表中选择类型和制造商。当用户从下拉列表中选择一项时,所选值应分配给 Car 实体的值。我怎样才能让它发挥作用?

    Car().Owner = newOwner;
Car.Owner() = newOwner;

这行不通。我尝试了很多组合。请记住,该值首先为 null,并且我无法插入新值;S

编辑 1

这里是Car的 Entity Framework 模型

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Estimate_App.Models
{
    public class tblCar
    {
        [Key]
        public int CarID { get; set; }
        public string CarNumber { get; set; }
     
        private DateTime _CreationDate;
        public DateTime CreationDate
        {
            get { return this._CreationDate; }
            set { this._CreationDate = DateTime.Now; }
        }

        //This is the Owner
        [ForeignKey("Owner")]
        public int? OwnerID { get; set; }
        public tblOwner Owner { get; set; }
    }
}

这是我在 Car().Owner() 中放入的内容,考虑 Container 应该是 Car(这是具有相同问题的其他项目)

http://s13.postimg.org/pfvfdkeqv/question_with_entitys.png

我将鼠标悬停在 newValue 上。

编辑2

根据 Julián Yuste 的回答,我也尝试过这个,但没有成功。这是错误:

Error message

当我这样做时Container().Owner(newValue);

编辑3

获取所有者的代码

breeze.EntityQuery.from("Customers")
                         .using(dataservice.manager)
                         .execute().then(function (data) {
                             data.results.forEach(function (item) {
                                 tempCustomerList.push(item); //ko.observableArray([]);
                             });
                         }).fail(function (data) {

                         });

最佳答案

您是否使用 dataservice 对象中的 EntityManager 来创建 newOwner 对象?

换句话说,您可能不应该这样做*:

var newOwner = new Owner();
newOwner.OwnerID = 123;

你应该这样做:

var newOwner = dataservice.manager.createEntity('Owner', { OwnerID: 123 });

*请注意,可以实际上使用new Owner(),但这需要您在代码中定义实体构造函数。 :-)

有关更多信息,请查看 Breeze 文档:http://www.breezejs.com/documentation/creating-entities

另请注意,您可以阅读 Breeze JavaScript 代码来帮助您理解该问题。如果您在 breeze.debug.js 中搜索错误消息(实体无法附加到另一个 EntityManager 中的实体。必须首先分离两个实体之一。) ,您将找到导致异常的代码行。从那里回溯可能会有所帮助。

编辑

问题的答案是确保 EntityManager 对象是 Singleton(在本例中为 dataservices.manager 对象)。

换句话说,使用与查询对象相同的EntityManager对象来更新对象。

关于javascript - 在 Breeze 实体中分配新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16714204/

相关文章:

javascript - jquery.on ("click")无法按我的预期工作

javascript - 使用 AngularJS、Karma 和 Jasmine 在 JavaScript 中记录/转储数据?

javascript - jQuery 表单提交 : Any way to know what element triggered the submit?

javascript - Breeze - 向请求添加 header

html - 如何使 Ember.js 应用离线并在可用时与服务器同步

javascript - 使用带有脚本标签的 fullcalendar/icalendar

javascript - Angularjs 触发国家状态依赖

validation - 服务器端验证

breeze - 使用 beforeSaveEntity 和导航属性

asp.net-mvc-4 - BreezeController 中如何调用 SaveChanges()?