8.8 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||
|---|---|---|---|---|---|---|---|
|
2026-04-16T02:19:49.438916+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | adb5cdc8cb4cf74e |
Documentation: Test Metadata Interfaces
1. Purpose
This module defines a set of interfaces that represent the schema of three database tables—TestEngineerDetails, CustomerDetails, and LabratoryDetails—used to store metadata about test participants and associated entities. These interfaces serve as data contracts for ORM (e.g., Entity Framework) mapping, enabling strongly-typed access to test-related metadata without exposing underlying database implementation details. They are part of the DTS.Common.Interface.TestMetaData namespace and are intended for use across the system wherever test metadata records need to be consumed or persisted.
2. Public Interface
ITestEngineerDetailsDbRecord
Represents a record from the TestEngineerDetails table.
| Member | Type | Description |
|---|---|---|
int TestEngineerId { get; set; } |
Property | Primary key; maps to TestEngineerId column. |
string Name { get; set; } |
Property | General name field; maps to Name column. |
string TestEngineerName { get; set; } |
Property | Full name of the test engineer; maps to TestEngineerName column. |
string TestEngineerPhone { get; set; } |
Property | Phone number of the test engineer; maps to TestEngineerPhone column. |
string TestEngineerFax { get; set; } |
Property | Fax number of the test engineer; maps to TestEngineerFax column. |
string TestEngineerEmail { get; set; } |
Property | Email address of the test engineer; maps to TestEngineerEmail column. |
bool LocalOnly { get; set; } |
Property | Indicates if the record is local-only (not shared); maps to LocalOnly column. |
DateTime LastModified { get; set; } |
Property | Timestamp of last modification; maps to LastModified column. |
string LastModifiedBy { get; set; } |
Property | User identifier who last modified the record; maps to LastModifiedBy column. |
int Version { get; set; } |
Property | Concurrency token for optimistic locking; maps to Version column. |
ICustomerDetailsDbRecord
Represents a record from the CustomerDetails table.
| Member | Type | Description |
|---|---|---|
int CustomerId { get; set; } |
Property | Primary key; maps to CustomerId column. |
string Name { get; set; } |
Property | General name field; maps to Name column. |
string CustomerName { get; set; } |
Property | Full name of the customer; maps to CustomerName column. |
string CustomerTestRefNumber { get; set; } |
Property | Reference number assigned by the customer for the test; maps to CustomerTestRefNumber column. |
string ProjectRefNumber { get; set; } |
Property | Project reference number; maps to ProjectRefNumber column. |
string CustomerOrderNumber { get; set; } |
Property | Order number from the customer; maps to CustomerOrderNumber column. |
string CustomerCostUnit { get; set; } |
Property | Cost center or unit associated with the customer; maps to CustomerCostUnit column. |
bool LocalOnly { get; set; } |
Property | Indicates if the record is local-only; maps to LocalOnly column. |
DateTime LastModified { get; set; } |
Property | Timestamp of last modification; maps to LastModified column. |
string LastModifiedBy { get; set; } |
Property | User identifier who last modified the record; maps to LastModifiedBy column. |
int Version { get; set; } |
Property | Concurrency token for optimistic locking; maps to Version column. |
ILabratoryDetailsDbRecord
Represents a record from the LabratoryDetails table.
| Member | Type | Description |
|---|---|---|
int LabratoryId { get; set; } |
Property | Primary key; maps to LabratoryId column. |
string Name { get; set; } |
Property | General name field; maps to Name column. |
string LabratoryName { get; set; } |
Property | Full name of the laboratory; maps to LabratoryName column. |
string LabratoryContactName { get; set; } |
Property | Name of the laboratory contact person; maps to LabratoryContactName column. |
string LabratoryContactPhone { get; set; } |
Property | Phone number of the laboratory contact; maps to LabratoryContactPhone column. |
string LabratoryContactFax { get; set; } |
Property | Fax number of the laboratory contact; maps to LabratoryContactFax column. |
string LabratoryContactEmail { get; set; } |
Property | Email address of the laboratory contact; maps to LabratoryContactEmail column. |
string LabratoryTestRefNumber { get; set; } |
Property | Reference number assigned by the laboratory for the test; maps to LabratoryTestRefNumber column. |
string LabratoryProjectRefNumber { get; set; } |
Property | Project reference number from the laboratory; maps to LabratoryProjectRefNumber column. |
bool LocalOnly { get; set; } |
Property | Indicates if the record is local-only; maps to LocalOnly column. |
DateTime LastModified { get; set; } |
Property | Timestamp of last modification; maps to LastModified column. |
string LastModifiedBy { get; set; } |
Property | User identifier who last modified the record; maps to LastModifiedBy column. |
int Version { get; set; } |
Property | Concurrency token for optimistic locking; maps to Version column. |
3. Invariants
- Each interface defines a single primary key property (
TestEngineerId,CustomerId,LabratoryId) annotated with[Key]and mapped to a column of the same name (via[Column("...")]). - All interfaces include the following shared metadata fields:
Name(string, not nullable per column mapping)LocalOnly(boolean)LastModified(non-nullableDateTime)LastModifiedBy(string, not nullable per column mapping)Version(non-nullableint)
- The
Nameproperty is mapped to the same column name across all three interfaces, suggesting a common convention for a generic display name. - The
LocalOnlyfield is consistently defined as abooland mapped to theLocalOnlycolumn in all tables, implying a uniform business rule for record scope (local vs. shared). - All string properties are nullable by default (no
[Required]attribute), but their column mappings do not explicitly indicate nullability—implementation may assume non-nullability based on DB schema, but this is not enforced in the interface.
4. Dependencies
- Dependencies of this module:
System.ComponentModel.DataAnnotations(for[Key],[Column])System(forDateTime,string,bool,int)
- Depended upon by:
- Any module that consumes or persists test metadata records (e.g., data access layers, services, UI models).
- Likely used in conjunction with Entity Framework or similar ORM (e.g., as
DbSet<ITestEngineerDetailsDbRecord>—though interfaces cannot be directly mapped by EF, they likely serve as contracts for concrete entity classes). - No direct references to other modules are visible in the source; dependencies are inferred from usage context.
5. Gotchas
- Typo in namespace/table name: The interface
ILabratoryDetailsDbRecordand its associated table (LabratoryDetails) use the misspelled word “Labratory” instead of “Laboratory”. This is likely intentional for legacy consistency but may cause confusion. - Redundant name fields: Each interface includes both a generic
Nameand a more specific name field (e.g.,TestEngineerName,CustomerName,LabratoryName). The distinction between these fields is not documented—consumers must infer semantics from naming. - Missing nullability annotations: While
[Column]attributes specify column names, they do not indicate whether columns allowNULL. For example,LastModifiedByis mapped but may be nullable in the database despite the lack of[Required]. - Concurrency handling: The
Versionfield is present but its semantics (e.g., row version vs. manual increment) are not specified in the interface. - No validation attributes: Despite using
System.ComponentModel.DataAnnotations, no[Required],[StringLength], or[DataType]attributes are applied beyond[Key]and[Column], so consumers cannot rely on metadata-driven validation. - No inheritance or shared base interface: Despite overlapping fields (e.g.,
Name,LocalOnly,LastModified,LastModifiedBy,Version), there is no common interface or abstract class—this may lead to duplication in data access or mapping logic. - None identified from source alone.