ORA-01400: 无法将 NULL 插入 ("TBLS"."FTP_GET_TESTING"."FTP_LOOKUP_ID"),但据我所知它不是 null
ORA-01400: cannot insert NULL into ("TBLS"."FTP_GET_TESTING"."FTP_LOOKUP_ID"), but as far as I can tell it is not null
我不知道是什么问题。我正在使用 Entity Framework 6 访问 Oracle 12c 数据库。当我尝试向 table 添加新行时,我的标题中出现了 ORA-01400 错误。但是,当我查看我试图在调试器中添加的值时,它们不为空。
protected void InsertButton_Click(object sender, EventArgs e)
{
AddNewPartner(GetFields());
}
public void AddNewPartner(FTP_GET_TESTING ftpPartner)
{
using (Entities myEntities = new Entities())
{
myEntities.FTP_GET_TESTING.Add(ftpPartner);
myEntities.SaveChanges();
}
}
更新
这是模型(数据优先):
public partial class FTP_GET_TESTING
{
public string FTP_LOOKUP_ID { get; set; }
public string FTP_HOST { get; set; }
public string USER_NAME { get; set; }
public string PASSWORD { get; set; }
public string ADAPTER { get; set; }
public string FTP_MODE { get; set; }
public string PICKUP_FOLDER { get; set; }
public string DESTINATION_FOLDER { get; set; }
public string DELIVERY_FILENAME { get; set; }
public string DESTINATION_BP { get; set; }
public string ARCHIVE_FOLDER { get; set; }
public string REMOTE_ARCHIVE_FILE_EXTENSION { get; set; }
public string REMOTE_ARCHIVE_DIRECTORY { get; set; }
public string REMOTE_FILE_DELETE { get; set; }
public string FTP_DOWN { get; set; }
public string FILTER { get; set; }
public string LISTSIZE_FLAG { get; set; }
public decimal LIST_MAX { get; set; }
public string CHECK_FILE_SIZE { get; set; }
public string PGP_DECRYPT { get; set; }
public string PGP_PASSPHRASE { get; set; }
public string CONNECTION_TYPE { get; set; }
public string REPRESENTATION_TYPE { get; set; }
public string FTPS_CACERTIFICATE_ID { get; set; }
public string FTPS_CIPHER_STRENGTH { get; set; }
public string PORT { get; set; }
public string FTPS_SSL { get; set; }
public string FTPS_SYSTEM_CERT_ID { get; set; }
public string SFTP_COMPRESSION { get; set; }
public string SFTP_KNOWNHOST_KEY_ID { get; set; }
public string SFTP_PREF_AUTH_METHOD { get; set; }
public string SFTP_PREFERRED_CIPHER { get; set; }
public string SFTP_PREFERRED_MAC { get; set; }
public string SFTP_USER_ID_KEY_ID { get; set; }
public string FMC_RELATIONSHIP_NAME { get; set; }
public string USER_FIELD1 { get; set; }
public string USER_FIELD2 { get; set; }
public string USER_FIELD3 { get; set; }
public string NOTES { get; set; }
public Nullable<System.DateTime> LAST_UPDATE { get; set; }
public string LAST_USER_UPDATE { get; set; }
public string PARTNER_NAME { get; set; }
public string MAILBOX_ID { get; set; }
public string REMEDY_QUEUE { get; set; }
public string SCHEDULE { get; set; }
public Nullable<decimal> ALERT_FREQUENCY { get; set; }
public string PRIORITY { get; set; }
public string CONTACT_NAME { get; set; }
public string CONTACT_EMAIL { get; set; }
public string CONTACT_PHONE { get; set; }
public string FTP_SEND_LOOKUP_ID { get; set; }
}
我在调试器中使用立即数 window 验证添加的数据。
myEntities.FTP_GET_TESTING.Add(ftpGet);
{GP_GENERIC_FTP_GET_TESTING}
ADAPTER: "FTP_Client_Adapter_Group"
ALERT_FREQUENCY: 120
ARCHIVE_FOLDER: ""
CHECK_FILE_SIZE: "NO"
CONNECTION_TYPE: "PASSIVE"
CONTACT_EMAIL: "Atest"
CONTACT_NAME: "Atest"
CONTACT_PHONE: "Atest"
DELIVERY_FILENAME: ""
DESTINATION_BP: ""
DESTINATION_FOLDER: ""
FILTER: ""
FMC_RELATIONSHIP_NAME: ""
FTPS_CACERTIFICATE_ID: ""
FTPS_CIPHER_STRENGTH: ""
FTPS_SSL: ""
FTPS_SYSTEM_CERT_ID: ""
FTP_DOWN: "N"
FTP_HOST: "Change"
FTP_LOOKUP_ID: "AnotherTest4"
FTP_MODE: "FTP"
FTP_SEND_LOOKUP_ID: ""
LAST_UPDATE: {12/28/2015 8:49:49 AM}
LAST_USER_UPDATE: "driver"
LISTSIZE_FLAG: "TRUE"
LIST_MAX: 520
MAILBOX_ID: ""
NOTES: "Atest"
PARTNER_NAME: "Atest"
PASSWORD: "Atest"
PGP_DECRYPT: "N"
PGP_PASSPHRASE: ""
PICKUP_FOLDER: ""
PORT: "21"
PRIORITY: "8x5"
REMEDY_QUEUE: "Atest"
REMOTE_ARCHIVE_DIRECTORY: ""
REMOTE_ARCHIVE_FILE_EXTENSION: ""
REMOTE_FILE_DELETE: "Y"
REPRESENTATION_TYPE: "BINARY"
SCHEDULE: "60MIN"
SFTP_COMPRESSION: ""
SFTP_KNOWNHOST_KEY_ID: ""
SFTP_PREFERRED_CIPHER: "blowfish-cbc"
SFTP_PREFERRED_MAC: ""
SFTP_PREF_AUTH_METHOD: ""
SFTP_USER_ID_KEY_ID: ""
USER_FIELD1: ""
USER_FIELD2: ""
USER_FIELD3: ""
USER_NAME: "Atest"
我认为这就是您想要查看的配置信息。
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
我还需要在此处添加什么以帮助找出问题?
为了解决这个问题,我做了两件事。首先我删除了模型 FTP_GET_TESTING 然后我将测试 table 中的主键(FTP_LOOKUP_ID)与非测试 table 中的 PK 进行了比较,并且存在一些差异。
在 table FTP_GET_TESTING 的设计视图中,我的 PK 约束被命名为 SYS_C0027857 我将其更改为 FTP_GET_TESTING_PK。我还更改了索引的名称以匹配约束名称 FTP_GET_TESTING_PK。然后我将 table 添加回我的模型并且它运行良好。
我不确定更改约束和索引中的 PK 名称是否解决了问题,或者只是删除并 re-adding 是否成功。
如果有人愿意为未来的观众添加一些意见,以便我能更多地了解发生了什么,我将不胜感激。
我不知道是什么问题。我正在使用 Entity Framework 6 访问 Oracle 12c 数据库。当我尝试向 table 添加新行时,我的标题中出现了 ORA-01400 错误。但是,当我查看我试图在调试器中添加的值时,它们不为空。
protected void InsertButton_Click(object sender, EventArgs e)
{
AddNewPartner(GetFields());
}
public void AddNewPartner(FTP_GET_TESTING ftpPartner)
{
using (Entities myEntities = new Entities())
{
myEntities.FTP_GET_TESTING.Add(ftpPartner);
myEntities.SaveChanges();
}
}
更新
这是模型(数据优先):
public partial class FTP_GET_TESTING
{
public string FTP_LOOKUP_ID { get; set; }
public string FTP_HOST { get; set; }
public string USER_NAME { get; set; }
public string PASSWORD { get; set; }
public string ADAPTER { get; set; }
public string FTP_MODE { get; set; }
public string PICKUP_FOLDER { get; set; }
public string DESTINATION_FOLDER { get; set; }
public string DELIVERY_FILENAME { get; set; }
public string DESTINATION_BP { get; set; }
public string ARCHIVE_FOLDER { get; set; }
public string REMOTE_ARCHIVE_FILE_EXTENSION { get; set; }
public string REMOTE_ARCHIVE_DIRECTORY { get; set; }
public string REMOTE_FILE_DELETE { get; set; }
public string FTP_DOWN { get; set; }
public string FILTER { get; set; }
public string LISTSIZE_FLAG { get; set; }
public decimal LIST_MAX { get; set; }
public string CHECK_FILE_SIZE { get; set; }
public string PGP_DECRYPT { get; set; }
public string PGP_PASSPHRASE { get; set; }
public string CONNECTION_TYPE { get; set; }
public string REPRESENTATION_TYPE { get; set; }
public string FTPS_CACERTIFICATE_ID { get; set; }
public string FTPS_CIPHER_STRENGTH { get; set; }
public string PORT { get; set; }
public string FTPS_SSL { get; set; }
public string FTPS_SYSTEM_CERT_ID { get; set; }
public string SFTP_COMPRESSION { get; set; }
public string SFTP_KNOWNHOST_KEY_ID { get; set; }
public string SFTP_PREF_AUTH_METHOD { get; set; }
public string SFTP_PREFERRED_CIPHER { get; set; }
public string SFTP_PREFERRED_MAC { get; set; }
public string SFTP_USER_ID_KEY_ID { get; set; }
public string FMC_RELATIONSHIP_NAME { get; set; }
public string USER_FIELD1 { get; set; }
public string USER_FIELD2 { get; set; }
public string USER_FIELD3 { get; set; }
public string NOTES { get; set; }
public Nullable<System.DateTime> LAST_UPDATE { get; set; }
public string LAST_USER_UPDATE { get; set; }
public string PARTNER_NAME { get; set; }
public string MAILBOX_ID { get; set; }
public string REMEDY_QUEUE { get; set; }
public string SCHEDULE { get; set; }
public Nullable<decimal> ALERT_FREQUENCY { get; set; }
public string PRIORITY { get; set; }
public string CONTACT_NAME { get; set; }
public string CONTACT_EMAIL { get; set; }
public string CONTACT_PHONE { get; set; }
public string FTP_SEND_LOOKUP_ID { get; set; }
}
我在调试器中使用立即数 window 验证添加的数据。
myEntities.FTP_GET_TESTING.Add(ftpGet);
{GP_GENERIC_FTP_GET_TESTING}
ADAPTER: "FTP_Client_Adapter_Group"
ALERT_FREQUENCY: 120
ARCHIVE_FOLDER: ""
CHECK_FILE_SIZE: "NO"
CONNECTION_TYPE: "PASSIVE"
CONTACT_EMAIL: "Atest"
CONTACT_NAME: "Atest"
CONTACT_PHONE: "Atest"
DELIVERY_FILENAME: ""
DESTINATION_BP: ""
DESTINATION_FOLDER: ""
FILTER: ""
FMC_RELATIONSHIP_NAME: ""
FTPS_CACERTIFICATE_ID: ""
FTPS_CIPHER_STRENGTH: ""
FTPS_SSL: ""
FTPS_SYSTEM_CERT_ID: ""
FTP_DOWN: "N"
FTP_HOST: "Change"
FTP_LOOKUP_ID: "AnotherTest4"
FTP_MODE: "FTP"
FTP_SEND_LOOKUP_ID: ""
LAST_UPDATE: {12/28/2015 8:49:49 AM}
LAST_USER_UPDATE: "driver"
LISTSIZE_FLAG: "TRUE"
LIST_MAX: 520
MAILBOX_ID: ""
NOTES: "Atest"
PARTNER_NAME: "Atest"
PASSWORD: "Atest"
PGP_DECRYPT: "N"
PGP_PASSPHRASE: ""
PICKUP_FOLDER: ""
PORT: "21"
PRIORITY: "8x5"
REMEDY_QUEUE: "Atest"
REMOTE_ARCHIVE_DIRECTORY: ""
REMOTE_ARCHIVE_FILE_EXTENSION: ""
REMOTE_FILE_DELETE: "Y"
REPRESENTATION_TYPE: "BINARY"
SCHEDULE: "60MIN"
SFTP_COMPRESSION: ""
SFTP_KNOWNHOST_KEY_ID: ""
SFTP_PREFERRED_CIPHER: "blowfish-cbc"
SFTP_PREFERRED_MAC: ""
SFTP_PREF_AUTH_METHOD: ""
SFTP_USER_ID_KEY_ID: ""
USER_FIELD1: ""
USER_FIELD2: ""
USER_FIELD3: ""
USER_NAME: "Atest"
我认为这就是您想要查看的配置信息。
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
我还需要在此处添加什么以帮助找出问题?
为了解决这个问题,我做了两件事。首先我删除了模型 FTP_GET_TESTING 然后我将测试 table 中的主键(FTP_LOOKUP_ID)与非测试 table 中的 PK 进行了比较,并且存在一些差异。 在 table FTP_GET_TESTING 的设计视图中,我的 PK 约束被命名为 SYS_C0027857 我将其更改为 FTP_GET_TESTING_PK。我还更改了索引的名称以匹配约束名称 FTP_GET_TESTING_PK。然后我将 table 添加回我的模型并且它运行良好。
我不确定更改约束和索引中的 PK 名称是否解决了问题,或者只是删除并 re-adding 是否成功。
如果有人愿意为未来的观众添加一些意见,以便我能更多地了解发生了什么,我将不胜感激。