J'ai un proglem avec nhibernate courant avec C# + MVC. Cela ne rend pas id unique.J'ai un proglème avec nhibernate courant avec C# + MVC. Il ne rend pas unique id
Je cours mon application. Ajouter un post. Son identifiant est 1.
J'ai arrêté mon application. Ensuite, je l'exécute à nouveau et si je crée un nouvel enregistrement, il est généré l'ID 1 pour un autre poste et l'écris sur le précédent.
public class Post
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string ShortDescription { get; set; }
...
}
Mapping
public class PostMap : ClassMap<Post>
{
public PostMap()
{
Id(x => x.Id);
Map(x => x.Title)
.Length(500);
...
Aide
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
InitializeSessionFactory();
return _sessionFactory;
}
}
private static void InitializeSessionFactory()
{
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012
.ConnectionString(c => c.FromConnectionStringWithKey("DefaultConnection")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Post>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(true, true))
.BuildSessionFactory();
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
Blog dépôt
public class BlogRepository
{
public int AddPost(Post post)
{
using (var session = NHibernateHelper.OpenSession())
{
using (var tran = session.BeginTransaction())
{
session.Save(post);
tran.Commit();
return post.Id;
}
}
}
extrait de code:
var _blogRepository = new BlogRepository();
var post = new Post();
post.Title = "Form den3";
post.PostedOn = DateTime.Now;
post.Modified = DateTime.Now;
var postID = _blogRepository.AddPost(post);
Tout code que vous pouvez partager? –
Cela fait un certain temps que j'ai utilisé nHibernate, mais ne devez-vous pas spécifier qu'il s'agit d'une colonne d'identité générée par db dans la carte de classe? Donc 'Id (x => x.Id) .GeneratedBy.Identity()' – christophano
J'ai essayé Id (x => x.Id) .GeneratedBy.Identity() mais la situation est toujours la même ( –