AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-4751136

Kev12853's questions

Martin Hope
Kev12853
Asked: 2025-02-14 18:10:06 +0800 CST

Como criar uma tabela auto-unida no SqlAlchemy para MySql

  • 5

Estou tentando criar uma tabela de auto-referência no MySql usando SqlAlchemy. Recebo o erro TypeError: Additional arguments should be named _, got 'ForeignKey'

Meu código é

from sqlalchemy import (
    create_engine,
    Column,
    Integer,
    String,
    DateTime,
    func,
    Text,
    DECIMAL,
    ForeignKey,
)

# from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, declarative_base, mapped_column, relationship

Base = declarative_base()
class Account(Base):
    __tablename__ = "account"

    id = mapped_column(Integer, primary_key=True)
    name = mapped_column(String(50))
    notes = mapped_column(Text())
    opening_balance = DECIMAL()
    current_balance = DECIMAL()
    parent_id = mapped_column(Integer, ForeignKey="account.id") #error here
    children = relationship("Account")
    created_at = mapped_column(DateTime, default=func.now())
    updated_at = mapped_column(DateTime, default=func.now(), onupdate=func.now())```

the error occurs at the line parent_id = ...
everywhere I look suggests that the code is correct (and I've looked in a lot of places). Co-Pilot told me to put () around "account.id" but PyCharm told me they were redundant. Either way got the error. Tried changing mapped_column to Column, same error.
Havent got a clue what to do!
mysql
  • 1 respostas
  • 18 Views
Martin Hope
Kev12853
Asked: 2024-10-03 00:24:04 +0800 CST

Como usar Linq First com classe base genérica <T>

  • 7

Estou trabalhando neste artigo do Xaml Brewer e alterando-o ligeiramente para usar meus modelos. Ele usa uma classe base MasterDetailViewModel genérica do tipo T.

A classe base é declarada assim

    public abstract partial class MasterDetailViewModel<T> : ObservableObject
    {
        private readonly ObservableCollection<T> items = new();
etc...

Minha classe derivada declara como .

    public partial class HomePageViewModel : MasterDetailViewModel<Tenant>
    {

etc..

A classe Tenant é

[Table("tenants")]
public partial class Tenant
{
    //[Column("email")]
    public string Email { get; set; }

    //[Column("first_name")]
    public string FirstName { get; set; }

    [Key]
    public int Id { get; set; }
etc..

Minha classe derivada contém um RelayCommand e um método

    [RelayCommand]
        private void Delete(int param) //param is Id of selected list item
    {
        DeleteCommand_Executed(param);
    }

        private void DeleteCommand_Executed(int parm)
        {
            if (parm > 0)
            {
                var toBeDeleted = Items.First(c => c.Id == parm); //get the record with this Id
                DeleteItem(toBeDeleted); //delete from the database
            }
        }

Quero mover o método RelayCommand e DeleteCommand_Executed para a classe base. Se eu apenas mover o comando relay para a classe base e adicionar isso, protected abstract void DeleteCommand_Executed(int parm);então com isso na classe derivada, protected override void DeleteCommand_Executed(int parm) etc.tudo funciona bem, mas se eu mover DeleteCommand_Executed para a classe base, recebo este erro

Erro (ativo) CS1061 'T' não contém uma definição para 'Id' e nenhum método de extensão acessível 'Id' aceitando um primeiro argumento do tipo 'T' pôde ser encontrado (está faltando uma diretiva using ou uma referência de assembly?)

Eu tentei adicionar um identificador de tipo. var toBeDeleted = Items.First<T>(c => c.Id == parm); Eu olhei algumas perguntas semelhantes no SO e alguns itens pesquisados ​​no Google e acho que o que me disseram é que o T não é conhecido até que a expressão tenha sido executada, então ele não pode saber quais propriedades T tem? Então é possível atingir meu objetivo de colocar tudo na classe base?

desde já, obrigado

c#
  • 2 respostas
  • 58 Views
Martin Hope
Kev12853
Asked: 2024-09-26 23:19:33 +0800 CST

Como usar [RelayCommand] na classe base

  • 5

Usando genéricos, tenho uma classe base View Model - (MyBaseViewModel <T>) que implementa um kit de ferramentas da comunidade RelayCommand. Isso é herdado por um ViewModel - MyDataInputControlViewModel : MyBaseViewModel <MyCustomType>que suporta um controle de usuário de entrada de dados. O comando relay precisa atualizar um banco de dados com os dados do controle de usuário. Como passo os dados para <MyCustomTypeo RelayCommand?

Então, estou tentando entender genéricos e herança e pensei que implementar um viewmodel base que lida com CRUD do banco de dados poderia economizar muito tempo repetindo comandos para todos os diferentes tipos de dados que precisam ir para o banco de dados. As ideias originais vieram do xamlbrewer , mas isso mantém os comandos de retransmissão no modelo de visualização de controle do usuário, o que eu poderia fazer, mas gostaria de colocá-los na classe base.

Código da classe base

public abstract partial class ObservableNavigationAwareViewModelBase<T> : ObservableObject, INavigationAware
{
    readonly DatabaseDAO _databaseDAO;
    private T BaseNewItem;

    public ObservableNavigationAwareViewModelBase(DatabaseDAO databaseDAO) { _databaseDAO = databaseDAO; }

    [RelayCommand]
    private void BaseAddNewRecord() { _databaseDAO.SaveNewRecord(BaseNewItem); }

Código do modelo de visualização de controle do usuário

public partial class AddNewTenantViewModel : ObservableNavigationAwareViewModelBase<Tenant>
{
    DatabaseDAO _databaseDAO;
    public string FirstName { get; set; }

    public AddNewTenantViewModel(DatabaseDAO databaseDAO) : base (databaseDAO)
    {_databaseDAO = databaseDAO;}

    private void CreateNewTenant()
    { BaseNewItem = new Tenant() { FirstName = FirstName, }; }


O modelo do inquilino

[Table("tenants")]
public partial class Tenant
{
    public string FirstName { get; set; }
}

Este é o xaml de teste que estou usando

        <TextBox Text="{x:Bind ViewModel.FirstName, Mode=TwoWay}" Header="First Name" />
        <Button Content="Add" Command="{x:Bind ViewModel.BaseAddNewRecordCommand}" />

Chamar o comando na classe base é bom, mas não consigo ver como criaria BaseNewItem a partir daí. Então, como vejo, o único lugar onde posso criar BaseNewItem é no UserControl ViewModel?? Sei que posso acessar BaseNewItem na classe base e na classe herdada, mas não consigo chamar CreateNewTenant da classe base. Então, minha pergunta é 'Como faço para obter BaseNewItem até a classe Base para ser usado no comando. Ou estou perdendo completamente o ponto em algum lugar?

c#
  • 1 respostas
  • 23 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve