삭제 작업을 수행하는 데 문제가 있습니다. 음, 실제로 제거하는 것이 아니라 상태를 변경하는 중입니다.ObjectStateManager에서 해당 객체를 찾을 수 없으므로 객체를 삭제할 수 없습니다. Entity Framwork 및 저장 프로 시저를 사용하여
내가 삭제 또는 변경 상태로 저장 프로 시저를 사용하고
ALTER PROCEDURE [dbo].[Delete_Empresa]
@CveEmpresaPK int = NULL,
@Estatus bit = NULL
AS
BEGIN
SET NOCOUNT ON;
if @Estatus = 0
begin
update CatEmpresas
set Estatus = 'False'
where CveEmpresaPK = @CveEmpresaPK
end
else
begin
update CatEmpresas
set Estatus = 'True'
where CveEmpresaPK = @CveEmpresaPK
end
END
나는 "할당 저장 프로 시저"
내 테이블에 내 SP를 추가하고 내 저장 프로 시저입니다 엔티티 프레임 워크 내 테이블에 매핑하기
C#의 방법은 (클래스 BaseRepository.cs) : 난 단지 두 개의 데이터
내 저장소를 사용
public void Detele(TEntity entity)
{
try
{
using (_context)
{
_context.Set<TEntity>().Remove(entity);
_context.SaveChanges();
}
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
throw;
}
}
때 호출 BaseRepository.cs :
public class CatEmpresas_Repositorio : Base.BaseRepository<CatEmpresa>, Interfaces.ICatEmpresas
{
private DBControlCalidadEntities _context = null;
/// <summary>
/// Iniciamos una instancia con una clase generica para Create, Update y Detele
/// </summary>
public CatEmpresas_Repositorio()
: base(new DBControlCalidadEntities())
{
}
및 본인 :
namespace SistemaControl_Entidades {
public partial class CatEmpresa
{
public CatEmpresa()
{
this.CatPersonals = new HashSet<CatPersonal>();
this.Cve1NivelDepto = new HashSet<Cve1NivelDepto>();
}
---->public int CveEmpresaPK { get; set; }
public string NombreEmpresa { get; set; }
public string RazonSocial { get; set; }
public string RFC { get; set; }
public string TipoEmpresa { get; set; }
public string Direccion { get; set; }
public string Colonia { get; set; }
public string CodigoPostal { get; set; }
public Nullable<int> CveEstadoFK { get; set; }
public Nullable<int> CveMpioFK { get; set; }
----->public Nullable<bool> Estatus { get; set; }......
도와주세요, 어떻게됩니까?
을 당신의 맥락에서 그렇습니다. 비록 IQueryable에서 파생되었지만이 세트에서 직접 제거를 호출하는 것은 아닙니다 (EF가 검색 + 삭제 호출로 변환 할 수 있을지 의심 스럽습니다). 컨텍스트에서 데이터를 수집 한 다음 EntityState를 삭제하도록 설정하십시오. 또한 전역 컨텍스트에서 using() 문을 사용하면 오류가 발생할 수 있습니다 (Dispose()가 블록을 떠날 때 호출되기 때문에). –
DevilSuichiro
코드에서 Delete_Empresa SP를 호출하는 곳은 어디입니까? 나는 그것을 보지 않는다. 또한 Entity Framework 코드를 먼저 사용하고 있습니까? – jpgrassi
sproc을 어떻게 삭제 작업에 매핑했는지 보여주십시오. 나는 두 번째 매개 변수'@ Estatus'가 여기서 잘 작동하지 않는다고 생각한다. –