C# 列名默认值被覆盖,但生成的查询仍然引用未定义的列
我有一个LINQ查询(涉及一个连接),它失败了,我知道一个异常来自实体框架的命名约定和假设,但我无法找到该设置的位置或如何关闭它。我得到的例外是:C# 列名默认值被覆盖,但生成的查询仍然引用未定义的列,c#,entity-framework-5,code-first,C#,Entity Framework 5,Code First,我有一个LINQ查询(涉及一个连接),它失败了,我知道一个异常来自实体框架的命名约定和假设,但我无法找到该设置的位置或如何关闭它。我得到的例外是: ORA-00904: \"Extent2\".\"Client_PermanentClientId\": invalid identifier" 在我们的任何表中都没有这样的列,它是一个表名(Client)和一个列(PermanentClientId)的组合,但是我已经用.HasColumnName()覆盖了(或者我认为是这样)所有的默认列名 谁能
ORA-00904: \"Extent2\".\"Client_PermanentClientId\": invalid identifier"
在我们的任何表中都没有这样的列,它是一个表名(Client
)和一个列(PermanentClientId
)的组合,但是我已经用.HasColumnName()
覆盖了(或者我认为是这样)所有的默认列名
谁能告诉我在EF中我去哪里关闭这个名字的创建,或者为什么它会旋转这个名字
客户端类:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Paychex.IP.Common.Validation;
namespace Paychex.IP.Common.IPEntities.Models
{
[Serializable]
[Table("CLIENT")]
public class Client : IPEntity
{
#region Entity properties and validation attributes
[Key]
[Range(1, int.MaxValue, ErrorMessage = "Client: PermanentClientId cannot be zero")]
public int PermanentClientId { get; set; }
public int AssociateNumber { get; set; }
public int ClientNumber { get; set; }
[StringLength(50, ErrorMessage = "Client: ClientName is limited to 50 characters")]
public string ClientName { get; set; }
[StringLength(30, ErrorMessage = "Client: Address1 is limited to 30 characters")]
public string Address1 { get; set; }
[StringLength(30, ErrorMessage = "Client: Address2 is limited to 30 characters")]
public string Address2 { get; set; }
[StringLength(24, ErrorMessage = "Client: City is limited to 24 characters")]
public string City { get; set; }
[StringLength(2, ErrorMessage = "Client: State is limited to 2 characters")]
public string State { get; set; }
[StringLength(10, ErrorMessage = "Client: ZipCode is limited to 10 characters")]
public string ZipCode { get; set; }
[StringLength(3, ErrorMessage = "Client: Country is limited to 3 characters")]
public string Country { get; set; }
[StringLength(3, ErrorMessage = "Client: ClientType is limited to 3 characters")]
public string ClientType { get; set; }
[StringLength(30, ErrorMessage = "Client: DoingBusinessAs is limited to 30 characters")]
public string DoingBusinessAs { get; set; }
[StringLength(30, ErrorMessage = "Client: Contact is limited to 30 characters")]
public string Contact { get; set; }
[StringLength(30, ErrorMessage = "Client: PhoneNumber is limited to 20 characters")]
public string PhoneNumber { get; set; }
[StringLength(10, ErrorMessage = "Client: Extension is limited to 10 characters")]
public string Extension { get; set; }
[StringLength(20, ErrorMessage = "Client: FaxNumber is limited to 20 characters")]
public string FaxNumber { get; set; }
[StringLength(10, ErrorMessage = "Client: FaxExtension is limited to 10 characters")]
public string FaxExtension { get; set; }
[StringLength(50, ErrorMessage = "Client: Email is limited to 50 characters")]
public string Email { get; set; }
public int NextEmployeeNumber { get; set; }
[StringLength(15, ErrorMessage = "Client: PayFrequency is limited to 15 characters")]
public string PayFrequency { get; set; }
[StringLength(10, ErrorMessage = "Client: EmployeeSort is limited to 10 characters")]
public string EmployeeSort { get; set; }
[DbBoolValidation("Client: UseDivisions is not a valid DbBool")]
public string UseDivisions { get; set; }
[StringLength(10, ErrorMessage = "Client: ClientAccessType is limited to 10 characters")]
public string ClientAccessType { get; set; }
public string AutopayWageId { get; set; }
public string Fein { get; set; }
[DbBoolValidation("Client: HrModule is not a valid DbBool")]
public string HrModule { get; set; }
public int BankCode { get; set; }
public int AchDays { get; set; }
public string AchCollect { get; set; }
[DbBoolValidation("Client: Updated is not a valid DbBool")]
public string Updated { get; set; }
[DbBoolValidation("Client: IatFlag is not a valid DbBool")]
public string IatFlag { get; set; }
[StringLength(50, ErrorMessage = "Client: OriginalEmail is limited to 50 characters")]
public string OriginalEmail { get; set; }
public virtual ICollection<ClientWage> Wages { get; set; }
public virtual ICollection<ClientDivision> Divisions { get; set; }
public virtual ICollection<ClientDepartment> Departments { get; set; }
public virtual ICollection<ClientJob> Jobs { get; set; }
public virtual ICollection<ClientDeduction> Deductions { get; set; }
#endregion
#region IValidatableObject interface implementation
// No custom validation for now
#endregion
#region IValidationHelper interface implementation
public override void PopulateContext(ValidationContext context)
{
context.Items.Clear();
context.Items.Add("PermanentClientId", PermanentClientId);
context.Items.Add("ClientName", ClientName);
context.Items.Add("Address1", Address1);
context.Items.Add("Address2", Address2);
context.Items.Add("City", City);
context.Items.Add("State", State);
context.Items.Add("ZipCode", ZipCode);
context.Items.Add("Country", Country);
context.Items.Add("ClientType", ClientType);
context.Items.Add("DoingBusinessAs", DoingBusinessAs);
context.Items.Add("Contact", Contact);
context.Items.Add("PhoneNumber", PhoneNumber);
context.Items.Add("Extension", Extension);
context.Items.Add("FaxNumber", FaxNumber);
context.Items.Add("FaxExtension", FaxExtension);
context.Items.Add("Email", Email);
context.Items.Add("PayFrequency", PayFrequency);
context.Items.Add("EmployeeSort", EmployeeSort);
context.Items.Add("UseDivisions", UseDivisions);
context.Items.Add("ClientAccessType", ClientAccessType);
context.Items.Add("HrModule", HrModule);
context.Items.Add("Updated", Updated);
context.Items.Add("IatFlag", IatFlag);
context.Items.Add("OriginalEmail", OriginalEmail);
}
#endregion
}
}
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.ComponentModel.DataAnnotations.Schema;
使用Paychex.IP.Common.Validation;
命名空间Paychex.IP.Common.IPEntities.Models
{
[可序列化]
[表(“客户”)]
公共类客户端:IPEntity
{
#区域实体属性和验证属性
[关键]
[范围(1,int.MaxValue,ErrorMessage=“客户端:PermanentClientId不能为零”)]
public int PermanentClientId{get;set;}
public int AssociateNumber{get;set;}
public int ClientNumber{get;set;}
[StringLength(50,ErrorMessage=“客户端:客户端名称限制为50个字符”)]
公共字符串ClientName{get;set;}
[StringLength(30,ErrorMessage=“客户端:地址1限制为30个字符”)]
公共字符串地址1{get;set;}
[StringLength(30,ErrorMessage=“客户端:地址2限制为30个字符”)]
公共字符串地址2{get;set;}
[StringLength(24,ErrorMessage=“客户端:城市限制为24个字符”)]
公共字符串City{get;set;}
[StringLength(2,ErrorMessage=“客户端:状态限制为2个字符”)]
公共字符串状态{get;set;}
[StringLength(10,ErrorMessage=“客户端:ZipCode限制为10个字符”)]
公共字符串ZipCode{get;set;}
[StringLength(3,ErrorMessage=“客户端:国家/地区限制为3个字符”)]
公共字符串国家{get;set;}
[StringLength(3,ErrorMessage=“客户端:ClientType限制为3个字符”)]
公共字符串ClientType{get;set;}
[StringLength(30,ErrorMessage=“客户端:DoingBusinessAs限制为30个字符”)]
公共字符串DoingBusinessAs{get;set;}
[StringLength(30,ErrorMessage=“客户端:联系人限制为30个字符”)]
公共字符串联系人{get;set;}
[StringLength(30,ErrorMessage=“客户端:电话号码限制为20个字符”)]
公共字符串PhoneNumber{get;set;}
[StringLength(10,ErrorMessage=“客户端:扩展名限制为10个字符”)]
公共字符串扩展名{get;set;}
[StringLength(20,ErrorMessage=“客户端:传真号码限制为20个字符”)]
公共字符串传真号码{get;set;}
[StringLength(10,ErrorMessage=“客户端:传真扩展名限制为10个字符”)]
公共字符串扩展名{get;set;}
[StringLength(50,ErrorMessage=“客户端:电子邮件限制为50个字符”)]
公共字符串电子邮件{get;set;}
public int NextEmployeeNumber{get;set;}
[StringLength(15,ErrorMessage=“客户端:支付频率限制为15个字符”)]
公共字符串支付频率{get;set;}
[StringLength(10,ErrorMessage=“客户端:EmployeeSort限制为10个字符”)]
公共字符串EmployeeSort{get;set;}
[DbBoolValidation(“客户端:UseDivisions不是有效的DbBool”)]
公共字符串UseDivisions{get;set;}
[StringLength(10,ErrorMessage=“客户端:ClientAccessType限制为10个字符”)]
公共字符串ClientAccessType{get;set;}
公共字符串自动支付ID{get;set;}
公共字符串Fein{get;set;}
[DbBoolValidation(“客户端:HrModule不是有效的DbBool”)]
公共字符串模块{get;set;}
公共整数银行代码{get;set;}
公共整数{get;set;}
公共字符串AchCollect{get;set;}
[DbBoolValidation(“客户端:更新的不是有效的DbBool”)]
公共字符串已更新{get;set;}
[DbBoolValidation(“客户端:IatFlag不是有效的DbBool”)]
公共字符串标记{get;set;}
[StringLength(50,ErrorMessage=“客户端:OriginalEmail限制为50个字符”)]
公共字符串OriginalEmail{get;set;}
公共虚拟ICollection{get;set;}
公共虚拟ICollection分区{get;set;}
公共虚拟ICollection部门{get;set;}
公共虚拟ICollection作业{get;set;}
公共虚拟ICollection扣减{get;set;}
#端区
#区域表对象接口实现
//目前没有自定义验证
#端区
#区域IValidationHelper接口实现
公共覆盖无效PopulateContext(ValidationContext)
{
context.Items.Clear();
context.Items.Add(“PermanentClientId”,PermanentClientId);
context.Items.Add(“ClientName”,ClientName);
上下文。项目。添加(“地址1”,地址1);
上下文。项目。添加(“地址2”,地址2);
上下文。项目。添加(“城市”,城市);
添加(“状态”,状态);
context.Items.Add(“ZipCode”,ZipCode);
上下文。项目。添加(“国家”,国家);
context.Items.Add(“ClientType”,ClientType);
context.Items.Add(“DoingBusinessAs”,DoingBusinessAs);
上下文。项目。添加(“联系人”,联系人);
context.Items.Add(“PhoneNumber”,PhoneNumber);
using System.Data.Entity.ModelConfiguration;
namespace Paychex.IP.Common.IPEntities.Models.Mappings
{
public class Client_map : EntityTypeConfiguration<Client>
{
public Client_map()
{
this.ToTable("CLIENT", "INSTANTPAY");
// Primary Key
this.HasKey(t => t.PermanentClientId);
// Column Properties
this.Property(t => t.PermanentClientId)
.HasColumnName("PCLIENT_ID");
this.Property(t => t.AssociateNumber)
.HasColumnName("ASSOCIATE_NO");
this.Property(t => t.ClientNumber)
.HasColumnName("CLIENT_NO");
this.Property(t => t.ClientName)
.HasColumnName("CLIENT_NAME");
this.Property(t => t.Address1)
.HasColumnName("ADDRESS1");
this.Property(t => t.Address2)
.HasColumnName("ADDRESS2");
this.Property(t => t.City)
.HasColumnName("CITY");
this.Property(t => t.State)
.HasColumnName("STATE");
this.Property(t => t.ZipCode)
.HasColumnName("ZIP");
this.Property(t => t.Country)
.HasColumnName("COUNTRY");
this.Property(t => t.ClientType)
.HasColumnName("CLIENT_TYPE");
this.Property(t => t.DoingBusinessAs)
.HasColumnName("DOING_BUSINESS_AS");
this.Property(t => t.Contact)
.HasColumnName("CONTACT");
this.Property(t => t.PhoneNumber)
.HasColumnName("PHONE");
this.Property(t => t.Extension)
.HasColumnName("EXTENSION");
this.Property(t => t.FaxNumber)
.HasColumnName("FAX");
this.Property(t => t.FaxExtension)
.HasColumnName("FAX_EXTENSION");
this.Property(t => t.Email)
.HasColumnName("EMAIL");
this.Property(t => t.NextEmployeeNumber)
.HasColumnName("NEXTEMP");
this.Property(t => t.PayFrequency)
.HasColumnName("PAY_FREQ");
this.Property(t => t.EmployeeSort)
.HasColumnName("EMPSORT");
this.Property(t => t.UseDivisions)
.HasColumnName("DIVUSE");
this.Property(t => t.ClientAccessType)
.HasColumnName("CLIENT_ACCESS_TYPE");
this.Property(t => t.AutopayWageId)
.HasColumnName("AUTOPAY_WAGE_ID");
this.Property(t => t.Fein)
.HasColumnName("FEIN");
this.Property(t => t.HrModule)
.HasColumnName("HR_MODULE");
this.Property(t => t.BankCode)
.HasColumnName("BANK_CODE");
this.Property(t => t.AchDays)
.HasColumnName("ACH_DAYS");
this.Property(t => t.AchCollect)
.HasColumnName("ACH_COLLECT");
this.Property(t => t.Updated)
.HasColumnName("UPDATED");
this.Property(t => t.IatFlag)
.HasColumnName("IAT_FLAG");
this.Property(t => t.OriginalEmail)
.HasColumnName("ORIG_EMAIL");
}
}
}
using System.Data.Entity.ModelConfiguration;
namespace Paychex.IP.Common.IPEntities.Models.Mappings
{
public class ClientDeduction_map : EntityTypeConfiguration<ClientDeduction>
{
public ClientDeduction_map()
{
// Primary Key
this.HasKey(t => new { t.PermanentClientId, t.DeductionId });
this.ToTable("CLIENTDEDUCTION", "INSTANTPAY");
// Column Properties
this.Property(t => t.PermanentClientId)
.HasColumnName("PCLIENT_ID")
.IsRequired();
this.Property(t => t.DeductionId)
.HasColumnName("DEDUCTION_ID")
.IsRequired();
this.Property(t => t.Active)
.HasColumnName("ACTIVE")
.HasMaxLength(1);
this.Property(t => t.AllowOnLevy)
.HasColumnName("ALLOW_ON_LEVY")
.HasMaxLength(1);
this.Property(t => t.AnnualLimit)
.HasColumnName("ANNUAL_LIMIT")
.HasPrecision(9, 2);
this.Property(t => t.Frequency)
.HasColumnName("FREQUENCY");
this.Property(t => t.LimitPerPay)
.HasColumnName("LIMIT_PER_PAY")
.HasPrecision(5, 2);
this.Property(t => t.Description)
.HasColumnName("DESCRIPTION")
.HasMaxLength(20);
this.Property(t => t.PaceId)
.HasColumnName("PACE_ID");
this.Property(t => t.Priority)
.HasColumnName("PRIORITY");
this.Property(t => t.RateType)
.HasColumnName("RATE_TYPE")
.HasMaxLength(10);
this.Property(t => t.ShortDescription)
.HasColumnName("SHORTDESC")
.HasMaxLength(5);
this.Property(t => t.VendorId)
.HasColumnName("VENDOR_ID")
.HasMaxLength(8);
this.HasRequired(t => t.Client)
.WithMany(w => w.Deductions)
.HasForeignKey(t => new { t.PermanentClientId });
}
}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<ColumnTypeCasingConvention>();
var mbClient = new Client_map();
modelBuilder.Configurations.Add(mbClient);
var mbActivePayrolls = new ActivePayroll_map();
modelBuilder.Configurations.Add(mbActivePayrolls);
var mbPaychecks = new Paycheck_map();
modelBuilder.Configurations.Add(mbPaychecks);
var mbPaychecktax = new PaycheckTax_map();
modelBuilder.Configurations.Add(mbPaychecktax);
var mbPaycheckwage = new PaycheckWage_map();
modelBuilder.Configurations.Add(mbPaycheckwage);
var mbPaycheckDeduction = new PaycheckDeduction_map();
modelBuilder.Configurations.Add(mbPaycheckDeduction);
var mbStates= new State_map();
modelBuilder.Configurations.Add(mbStates);
var mbClientHeaderSchedule = new ClientScheduleHeader_map();
modelBuilder.Configurations.Add(mbClientHeaderSchedule);
var mbClientDepartment = new ClientDepartment_map();
modelBuilder.Configurations.Add(mbClientDepartment);
var mbClientDivision = new ClientDivision_map();
modelBuilder.Configurations.Add(mbClientDivision);
var mbClientWage = new ClientWage_map();
modelBuilder.Configurations.Add(mbClientWage);
var mbViewEmployeeList = new ViewEmployeeList_map();
modelBuilder.Configurations.Add(mbViewEmployeeList);
base.OnModelCreating(modelBuilder);
}