Существует простой трюк для просмотра в виде списка файлов, просто добавьте :
после хэша.
git show 9d3a52c474:
Затем вы можете просверлить
git show 9d3a52c474:someDir/someOtherDir
Если вы ударите файл, вы получите исходную версию файла; который иногда является тем, что вам нужно, если вы ищете только хорошую ссылку или ключевые фрагменты кода (diff могут сделать все беспорядок),
git show 9d3a52c474:someDir/someOtherDir/somefile
Единственным недостатком этого метода является то, что он не " t легко показать дерево файлов.
Я думаю, что эта ошибка происходит, если Вы Attach
объект к DataContext
, который был уже загружен.
код, который вызывает ошибку, точно похож на Вас шоу здесь? После создания нового OffertaDataContext
Вы запрашиваете что-нибудь перед Attach
?
Это - то, что я делал для обхождения этой ошибки. В основном Вы находите, где эта строка находится в базе данных на основе первичного ключа. Если это не существует затем, Вы вставляете его. Иначе Вы получаете версию от базы данных и обновляете все необходимые поля.
public static void Update(Enquiry enquiry)
{
JobsDataContext db = new JobsDataContext();
var enquiries = from e in db.Enquiries
where e.PKID == enquiry.PKID
select e;
if (enquiries.Count() < 1)
{
db.Enquiries.InsertOnSubmit(enquiry);
}
else
{
Enquiry updateEnquiry = enquiries.Single();
updateEnquiry.LengthMm = enquiry.LengthMm;
updateEnquiry.ShippedQty = enquiry.ShippedQty;
updateEnquiry.StatusCode = enquiry.StatusCode;
}
db.SubmitChanges();
}
Это может стать утомительным при создании обновлений схемы базы данных все время когда необходимо будет возвратиться сюда для обновления кода.
Вы пытаетесь добавить несколько новых объектов в одном хите, где LinqEntities создаются с ключом 0?
у меня была эта проблема в прошлом, когда я пытался добавить объекты в таблицу на моей странице и затем когда я пытался удалить или обновить эти объекты, кратные числа будут иметь ключевой 0. Так, очевидно, это не знало, что сделать с моими запросами...
попробуйте это, даже если ваш TEntity ID (здесь Area) является столбцом идентификатора; Только это, без каких-либо изменений в вашем SP или модели:
public void InitForm()
{
bnsEntity.DataSource = CacheManagement.cachedAreas;
newID = CacheManagement.cachedAreas.LastOrDefault().areaID + 1;
grdEntity.DataSource = bnsEntity;
}
private void tsbNew_Click(object sender, EventArgs e)
{
var newArea = new Area();
newArea.areaID = (byte)newID++;
dataContext.GetTable<Area>().InsertOnSubmit(newArea);
bnsEntity.Add(newArea);
grdEntity.MoveToNewRecord();
}
У меня есть подход, аналогичный подходу Ноя, но я использую хранимую процедуру, чтобы проверить, существует ли запись с этим PK, таким образом Entity не загружается в контексте, а код обновления включает только две строки кода и не потребует изменений в будущем при добавлении / удалении полей из таблицы, потребуется изменить SP только в случае изменения PK таблицы:
bool existe = Convert.ToBoolean(dbc.spSConfigReportesPeriodicos(configReportesPeriodicos.CodigoCliente));
if (existe)
{
dbc.ConfigReportesPeriodicos.Attach(configReportesPeriodicos);
dbc.Refresh(RefreshMode.KeepCurrentValues, configReportesPeriodicos);
}
else
{
dbc.ConfigReportesPeriodicos.InsertOnSubmit(configReportesPeriodicos);
}
dbc.SubmitChanges();
А вот хранимая процедура:
ALTER PROCEDURE dbo.spSConfigReportesPeriodicos
(
@codigoCliente int
)
AS
IF EXISTS(SELECT 1 FROM dbo.ConfigReportesPeriodicos WHERE CodigoCliente = @codigoCliente)
RETURN 1
ELSE
RETURN 0
RETURN