Permalink
Browse files

Fixing object duplication

  • Loading branch information...
sebastienros committed Jan 29, 2016
1 parent 44f198d commit 0faafe6122b141707af8e9212aa92f084c77ed36
Showing with 85 additions and 7 deletions.
  1. +63 −0 .gitattributes
  2. +21 −6 src/YesSql.Core/Services/Session.cs
  3. +1 −1 src/YesSql.Core/project.json
View
@@ -0,0 +1,63 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
@@ -53,12 +53,31 @@ public void Save(object entity)
// is it a new object?
if (!_identityMap.HasEntity(entity))
{
// already beging saved?
if (_saved.Contains(entity))
{
return;
}
// then assign it an identifier
var accessor = _store.GetIdAccessor(entity.GetType(), "Id");
if (accessor != null)
{
var id = _store.GetNextId();
accessor.Set(entity, id);
var id = accessor.Get(entity);
// do we need to track the entity
if (id > 0)
{
_identityMap.Add(id, entity);
_updated.Add(entity);
return;
}
else
{
// it's a new entity
id = _store.GetNextId();
accessor.Set(entity, id);
}
}
_saved.Add(entity);
@@ -94,10 +113,6 @@ private async Task SaveEntityAsync(object entity, bool update)
int id;
if(_identityMap.TryGetDocumentId(entity, out id))
{
// Do nothing if the document hasn't been modified
// TODO: To prevent this check we could remove change tracking as a whole and have users
// use Update(entity), or have a NoTrack option in a session so that entities would still be
// in the identity map but not saved on a Commit
if (update)
{
var oldDoc = await GetDocumentByIdAsync(id);
@@ -1,5 +1,5 @@
{
"version": "2.0.0-alpha-9012",
"version": "2.0.0-alpha-9013",
"authors": [ "Sebastien Ros" ],
"copyright": "Sebastien Ros",
"projectUrl": "https://github.com/sebastienros/yessql/blob/dnx",

0 comments on commit 0faafe6

Please sign in to comment.