Wel*_*ing 94 c# sql-server-2008 linq-to-sql entity-framework-4
写入数据库时出现此错误:
ReferentialConstraint中的依赖属性映射到存储生成的列.栏目:'PaymentId'.
public bool PayForItem(int terminalId, double paymentAmount,
eNums.MasterCategoryEnum mastercategoryEnum, int CategoryId, int CategoryItemId)
{
using (var dbEntities = new DatabaseAccess.Schema.EntityModel())
{
int pinnumber = 0;
long pinid = 1; //getPinId(terminalId,ref pinnumber) ;
var payment = new DatabaseAccess.Schema.Payment();
payment.CategoryId = CategoryId;
payment.ItemCategoryId = CategoryItemId;
payment.PaymentAmount = (decimal)paymentAmount;
payment.TerminalId = terminalId;
payment.PinId = pinid;
payment.HSBCResponseCode = "";
payment.DateActivated = DateTime.Now;
payment.PaymentString = "Payment";
payment.PromotionalOfferId = 1;
payment.PaymentStatusId = (int)eNums.PaymentStatus.Paid;
//payment.PaymentId = 1;
dbEntities.AddToPayments(payment);
dbEntities.SaveChanges();
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
架构是:

小智 174
您是否可能在表之间定义了错误的列关系?不同的列和一个被设置为自动数字.
它发生在我身上.
Lad*_*nka 46
此错误表示您使用的是不受支持的关系,或者您的映射中存在错误.您的代码很可能与错误完全无关.
该错误意味着您在依赖实体中的外键属性被定义为存储生成的实体之间存在某种关系.存储生成的属性将填充到数据库中.EF不支持将存储生成的属性作为外键(以及主键中的计算属性).
我有同样的问题.基于这里提供的答案,我能够跟踪并解决它,但我有一个奇怪的问题如下所述 - 它可能会对未来的某些人有所帮助.
在我的依赖表上,外键列已设置为StoreGeneratedPattern ="Identity".我不得不把它改成"无".不幸的是,在设计师内部这样做根本不起作用.
我查看了设计器生成的XML(SSDL),这些属性仍然存在,所以我手动删除它们.我还必须修复数据库上的列(从CREATE TABLE SQL中删除Identity(1,1))
在那之后,问题就消失了.
| 归档时间: |
|
| 查看次数: |
73262 次 |
| 最近记录: |