我在桌子上有一些不可空的FK。 我已经检查了模型和数据库,并且FK被设置为不可为空,并且没有分配默认值。
现在当我创建一个这种类型的微风实体时,FK列已经填充了“ 0 ”
我想在这里发布一些图片,但我的声誉不允许我这样做。
我已经检查了验证器并且它们在那里(需要的类型之一和int32类型之一)但是它们将遗憾地从未启动,因为值已经是“0”
所以我不会在客户端获得验证错误,但是在返回服务器时我会得到它们。
顺便说一句。我正在使用web api实体框架,ms sql2008r2,我已经尝试了breeze.debug.js 1.4.5,1.4.6以及现在github上应该修复getValidationErrors()的那个。
这就是我如何创建实体:
function newDiscount() {
var dsc = manager.createEntity("tblTransactionImporterDiscounts");
return dsc;
}
这有点像臭虫。任何启示都将受到高度赞赏。
答案 0 :(得分:1)
创建实体时,Breeze始终初始化其所有字段的值。
所以你有几个选择。使字段可为空或添加自定义验证,规定值0对此字段无效。
有关此点的详细讨论,请参阅validation documentation,因为它与参考导航属性有关。
答案 1 :(得分:0)
试试这个:
namespace ProvSys.Models
{
using System;
using System.Collections.Generic;
public partial class tblTransactionImporterDiscounts
{
public int IDTransactionImporterDiscount { get; set; }
public int IDImporterDiscount { get; set; }
public int IDCampaignType { get; set; }
public string CampaignText { get; set; }
public Nullable<decimal> Discount { get; set; }
public int IDTransaction { get; set; }
public Nullable<System.DateTime> ReceivedOn { get; set; }
[ForeignKey("IDCampaignType")]
public tblCampaignTypes tblCampaignTypes { get; set; }
[ForeignKey("IDImportedDiscount")]
public tblImporterDiscounts tblImporterDiscounts { get; set; }
[ForeignKey("IDTransaction")]
public tblTransactions tblTransactions { get; set; }
}
}
此外,由于它不可为空,我的假设是你不想保存空值,你应该知道你想要附加到新对象的外键。尝试添加这样的东西来创建函数:
function newDiscount(transaction, campaign, importedDiscount) {
var dsc = manager.createEntity("tblTransactionImporterDiscounts");
dsc.IDCampaignType = campaign.id;
dsc.IDImportedDiscount = importedDiscount.id;
dsc.IDTransaction = transaction.id;
return dsc;
}