c# - GenericADOException was unhandled Could not insert -
i trying use nhibernate bycode mapping , not having success. idea i'm doing wrong?
my table:
create table [dbo].[activities]( [id] [int] identity(1,1) not null, [date] [bigint] not null, [userid] [int] not null, [customerjob] [int] null, [service] [int] null, [class] [int] null, [notes] [text] null, [billable] [tinyint] not null, [duration] [int] not null, constraint [pk_activities_1] primary key clustered ( [id] asc )with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary] ) on [primary] textimage_on [primary]
my class:
public class activity { public virtual int id { get; set; } public virtual long date { get; set; } public virtual int userid { get; set; } public virtual int? customerjob { get; set; } public virtual int? service { get; set; } public virtual int? class { get; set; } public virtual string notes { get; set; } public virtual byte billable { get; set; } public virtual int duration { get; set; } public static void add(activity activity) { using (isession session = applicationcontextsingleton.sessionfactory.opensession()) { using (itransaction transaction = session.begintransaction()) { session.save(activity); transaction.commit(); } } } }
my mapping class:
namespace simpletimer.maps { public class activitiesmap : classmapping<activity> { public activitiesmap() { schema("dbo"); lazy(true); id(x => x.id, map => map.generator(generators.identity)); property(x => x.date, map => map.notnullable(true)); property(x => x.userid, map => map.notnullable(true)); property(x => x.customerjob); property(x => x.service); property(x => x.class); property(x => x.notes); property(x => x.billable, map => map.notnullable(true)); property(x => x.duration, map => map.notnullable(true)); } } }
my singleton use manage session , configuration:
class applicationcontextsingleton { private static configuration configuration; private static isessionfactory sessionfactory; public static configuration nhconfiguration { { if (configuration == null) { appconfigure(); } return configuration; } } public static isessionfactory sessionfactory { { if (sessionfactory == null) { appconfigure(); } return sessionfactory; } } private static void appconfigure() { configuration = configurenhibernate(); sessionfactory = nhconfiguration.buildsessionfactory(); } private static configuration configurenhibernate() { // create object hold configuration settings // , fill information access database nhibernate.cfg.configuration configuration = new nhibernate.cfg.configuration(); configuration.properties[nhibernate.cfg.environment.connectionprovider] = "nhibernate.connection.driverconnectionprovider"; // these 3 lines of code change in order use database configuration.properties[nhibernate.cfg.environment.dialect] = "nhibernate.dialect.mssql2000dialect"; configuration.properties[nhibernate.cfg.environment.connectiondriver] = "nhibernate.driver.sqlclientdriver"; configuration.properties[nhibernate.cfg.environment.connectionstring] = system.configuration.configurationmanager.connectionstrings["simpletimerdatabase.properties.settings.qtimerconnectionstring"].connectionstring; var mapping = getmappings(); configuration.adddeserializedmapping(mapping, "nhschematest"); schemametadataupdater.quotetableandcolumns(configuration); return configuration; } private static hbmmapping getmappings() { var mapper = new modelmapper(); mapper.addmappings(assembly.getassembly(typeof(activitiesmap)).getexportedtypes()); var mapping = mapper.compilemappingforallexplicitlyaddedentities(); return mapping; } }
the code i'm using save activity:
activity = new activity(); a.date = datetime.now.ticks / timespan.tickspersecond; a.userid = 1; a.notes = "notes"; a.billable = 1; a.duration = 60 * 60 * 3; //three hours activity.add(a); console.writeline("added activity");
on activity.add
exception:
genericadoexception unhandled: not insert:
[simpletimer.domain.activity][sql: insert dbo.activity ([date], userid, customerjob, service, [class], notes, billable, duration) values (?, ?, ?, ?, ?, ?, ?, ?); select scope_identity()]
any clue i'm doing wrong?
this kind of exceptions has clear answer ... few lines below. , expect like:
genericadoexception unhandled: not insert: [simpletimer.domain.activity][sql: insert dbo.activity ([date], userid, customerjob, service, [class], notes, billable, duration) values (?, ?, ?, ?, ?, ?, ?, ?); select scope_identity()] ...
... --> system.data.sqlclient.sqlexception: cannot insert value null column 'activityid', table 'dbname.dbo.activity'; column not allow nulls. insert fails ....
and tried show above, suspected identity beeing turned off. apply this
alter table [dbo].[activity] alter column [activityid] int not null identity(1,1)
or change generator: 5.1.4.1. generator
Comments
Post a Comment