Merge: Detached Head

This commit is contained in:
Gary Sharp
2013-04-30 14:35:58 +10:00
13 changed files with 8 additions and 649 deletions
@@ -23,17 +23,7 @@ namespace Disco.Data.Repository.Monitor
internal static RepositoryMonitorEvent[] BeforeSaveChanges(DiscoDataContext dbContext)
{
var contextStateManager = ((IObjectContextAdapter)dbContext).ObjectContext.ObjectStateManager;
<<<<<<< HEAD
//var changes = contextStateManager.GetObjectStateEntries(System.Data.EntityState.Added).Concat(contextStateManager.GetObjectStateEntries(System.Data.EntityState.Deleted)).Concat(contextStateManager.GetObjectStateEntries(System.Data.EntityState.Modified));
dbContext.ChangeTracker.DetectChanges();
var events = dbContext.ChangeTracker.Entries().Where(e => e.State != System.Data.EntityState.Unchanged && e.State != System.Data.EntityState.Detached).Select(entryState =>
{
var monitorEvent = EventFromEntryState(dbContext, entryState, contextStateManager.GetObjectStateEntry(entryState.Entity));
// Push to Stream
streamBefore.OnNext(monitorEvent);
=======
var changes = contextStateManager.GetObjectStateEntries(System.Data.EntityState.Added).Concat(contextStateManager.GetObjectStateEntries(System.Data.EntityState.Deleted)).Concat(contextStateManager.GetObjectStateEntries(System.Data.EntityState.Modified));
var events = changes.Select(entryState =>
@@ -43,7 +33,6 @@ namespace Disco.Data.Repository.Monitor
// Push to Stream
streamBefore.OnNext(monitorEvent);
>>>>>>> origin/Repository-Monitor
return monitorEvent;
}).ToArray();
@@ -91,28 +80,16 @@ namespace Disco.Data.Repository.Monitor
var entryState = stateManager.GetObjectStateEntry(monitorEvent.Entity);
monitorEvent.EntityKey = entryState.EntityKey.EntityKeyValues.Select(kv => kv.Value).ToArray();
}
<<<<<<< HEAD
monitorEvent.afterCommit = true;
}
internal static RepositoryMonitorEvent EventFromEntryState(DiscoDataContext dbContext, DbEntityEntry dbEntryState, ObjectStateEntry objectEntryState)
=======
}
internal static RepositoryMonitorEvent EventFromEntryState(ObjectStateEntry entryState)
>>>>>>> origin/Repository-Monitor
{
RepositoryMonitorEventType eventType;
string[] modifiedProperties = null;
object[] entityKey = null;
Type entityType;
<<<<<<< HEAD
switch (dbEntryState.State)
=======
switch (entryState.State)
>>>>>>> origin/Repository-Monitor
{
case System.Data.EntityState.Added:
eventType = RepositoryMonitorEventType.Added;
@@ -130,28 +107,6 @@ namespace Disco.Data.Repository.Monitor
eventType = RepositoryMonitorEventType.Unchanged;
break;
default:
<<<<<<< HEAD
throw new NotSupportedException(string.Format("Database Entry State not supported: {0}", dbEntryState.State.ToString()));
}
entityType = EntityTypeFromProxy(dbEntryState.Entity.GetType());
// Only pass modified properties on Modified Event (Ignore Added/Deleted)
if (eventType == RepositoryMonitorEventType.Modified)
modifiedProperties = objectEntryState.GetModifiedProperties().ToArray();
// Don't pass entity key when entity newly added
if (eventType != RepositoryMonitorEventType.Added)
entityKey = objectEntryState.EntityKey.EntityKeyValues.Select(kv => kv.Value).ToArray();
return new RepositoryMonitorEvent()
{
dbEntityState = dbEntryState,
objectEntryState = objectEntryState,
dbContext = dbContext,
EventType = eventType,
Entity = dbEntryState.Entity,
=======
throw new NotSupportedException(string.Format("Database Entry State not supported: {0}", entryState.State.ToString()));
}
@@ -169,7 +124,6 @@ namespace Disco.Data.Repository.Monitor
{
EventType = eventType,
Entity = entryState.Entity,
>>>>>>> origin/Repository-Monitor
EntityKey = entityKey,
EntityType = entityType,
ModifiedProperties = modifiedProperties
@@ -1,11 +1,8 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
<<<<<<< HEAD
using System.Data.Entity.Infrastructure;
using System.Data.Objects;
=======
>>>>>>> origin/Repository-Monitor
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -14,7 +11,6 @@ namespace Disco.Data.Repository.Monitor
{
public class RepositoryMonitorEvent
{
<<<<<<< HEAD
[JsonIgnore]
internal ObjectStateEntry objectEntryState { get; set; }
[JsonIgnore]
@@ -25,8 +21,6 @@ namespace Disco.Data.Repository.Monitor
[JsonIgnore]
public DiscoDataContext dbContext { get; set; }
=======
>>>>>>> origin/Repository-Monitor
public RepositoryMonitorEventType EventType { get; set; }
[JsonIgnore]
@@ -46,7 +40,6 @@ namespace Disco.Data.Repository.Monitor
public object[] EntityKey { get; set; }
public string[] ModifiedProperties { get; set; }
<<<<<<< HEAD
public T GetPreviousPropertyValue<T>(string PropertyName)
{
@@ -59,7 +52,5 @@ namespace Disco.Data.Repository.Monitor
{
return (T)dbEntityState.CurrentValues[PropertyName];
}
=======
>>>>>>> origin/Repository-Monitor
}
}